spring ai 初学-kb88凯时官网登录

来自:
时间:2024-05-28
阅读:
免费资源网,https://freexyz.cn/

”spring 不生产 ai,只是 ai 工具的搬运工“

项目可以查看

open ai

前期准备

,需要使用魔法才能打开,同时购买很麻烦,建议淘宝进行购买,只需要购买 open ai 的 apikey 即可。

apikey 形如 sk-xxxxxxxxxxxxxxxxx

项目创建

idea 创建 springboot maven 项目(基于1.0-snapshot版本,springboot 3.2.6),依赖选择spring web、 openai。其他可以自行选择

修改项目仓库地址,中央仓库暂时还没 spring ai 相关 jar 包。仓库地址改成快照仓库地址,

    
        spring-snapshots
        spring snapshots
        https://repo.spring.io/snapshot
        
            false
        
    

项目中找到 pom.xml 文件,将 0.8.1 改为 1.0.0-snapshot

yaml 配置文件中添加,openai 更多配置可以查看 org.springframework.ai.autoconfigure.openai.openaiautoconfiguration。

spring:
  ai:
    openai:
      # 购买的 api-key
      api-key: sk-xxxx
      # 如果是官方地址,则可以不填,默认为 https://api.openai.com
      base-url: 

聊天

基础使用

主要类 org.springframework.ai.openai.openaichatmodel,快照版本不同,可能名字不一样,可以查看 org.springframework.ai.autoconfigure.openai.openaiautoconfiguration 中的聊天类是哪个。

import jakarta.annotation.resource;
import org.junit.jupiter.api.test;
import org.springframework.ai.openai.openaichatmodel;
import org.springframework.boot.test.context.springboottest;
@springboottest
public class chattest {
    @resource
    private openaichatmodel chatmodel;
    @test
    public void chat1(){
        string msg = "你是谁?";
        //返回string数据
        string res = chatmodel.call(msg);
        system.out.println(res);
    }
    
    @test
    public void chat2(){
        string msg = "你是谁?";
        //返回对象
        chatresponse res = chatmodel.call(new prompt(msg));
        system.out.println(res);
        //获取对话返回结果
        system.out.println(res.getresult().getoutput().getcontent());
    }
}

配置属性

    @test
    public void test3(){
        string msg = "你是谁";
        //采用 gpt-4-turbo 模型
        chatresponse res = chatmodel.call(new prompt(msg, openaichatoptions.builder()
                                                     .withmodel("gpt-4-turbo")
                                                     .build()));
        system.out.println(res);
        //获取对话返回结果
        system.out.println(res.getresult().getoutput().getcontent());
    }

聊天模型配置属性可以查看 org.springframework.ai.autoconfigure.openai.openaichatproperties,也可以在查看更详细的信息。配置属性也可以放在 yml 配置文件中,如 openaichatproperties 的注解,需要以 spring.ai.openai.chat 开头,例如将 gpt-4-turbo 配置在配置文件中,就是 openaichatproperties 中 options 中的属性。

spring:
  ai:
    openai:
      chat:
        options:
          model: gpt-4-turbo

多模型

可以配合图片等让聊天模型进行回答。

    //给图片来进行聊天
    @test
    public void test4() {
        //获取图片资源
        classpathresource resource = new classpathresource("2024052701.png");
        usermessage usermessage = new usermessage("说说你看到了什么", 
                list.of(new media(mimetypeutils.image_png, resource)));
        chatresponse res = chatmodel.call(new prompt(usermessage, openaichatoptions.builder()
                .withmodel("gpt-4-turbo")
                .build()));
        system.out.println(res);
        //获取回答
        system.out.println(res.getresult().getoutput().getcontent());
    }

图像

基础使用

主要类 org.springframework.ai.openai.openaiimagemodel,快照版本不同,可能类不一样。可以查看 org.springframework.ai.autoconfigure.openai.openaiautoconfiguration 中具体的图像类是哪个。

import jakarta.annotation.resource;
import org.junit.jupiter.api.test;
import org.springframework.ai.image.imageprompt;
import org.springframework.ai.image.imageresponse;
import org.springframework.ai.openai.openaiimagemodel;
import org.springframework.boot.test.context.springboottest;
@springboottest
public class imagetest {
    @resource
    private openaiimagemodel imagemodel;
    @test
    public void test(){
        //调用 image 模型的 call 方法获取图片
        imageresponse res = imagemodel.call(new imageprompt("山水画"));
        //ai 绘制的图片路径
        string url = res.getresult().getoutput().get;
        system.out.println(url);
    }
}

配置属性

    @test
    public void test2(){
        //使用 dall-e-2 绘画
        openaiimageoptions options = openaiimageoptions.builder()
            .withmodel(openaiimageapi.imagemodel.dall_e_2.getvalue())
            .build();
        imageresponse res = imagemodel.call(new imageprompt("山水画", options));
        //获取 ai 绘画路径
        string url = res.getresult().getoutput().get;
        system.out.println(url);
    }

图像模型属性配置可以查看 org.springframework.ai.autoconfigure.openai.openaiimageproperties,也可以查看获取更详细的信息。当然配置属性也可以在 yml 中定义,如 openaiimageproperties 上的注解,需要以 spring.ai.openai.image 开头,例如使用 dall-e-2 模型进行绘画

 spring:
  ai:
    openai:
      image:
        options:
          model: dall-e-2

语音

语音转文字

基础使用

主要类 org.springframework.ai.openai.openaiaudiotranscriptionmodel,快照版本不同,可能名字不一样,可以查看 org.springframework.ai.autoconfigure.openai.openaiautoconfiguration 中的语音转文字翻译类是哪个。

import jakarta.annotation.resource;
import org.junit.jupiter.api.test;
import org.springframework.ai.openai.openaiaudiotranscriptionmodel;
import org.springframework.boot.test.context.springboottest;
import org.springframework.core.io.classpathresource;
@springboottest
public class audiotest {
    //语音转文字
    @resource
    private openaiaudiotranscriptionmodel transcriptionmodel;
    @test
    public void testtranscription1(){
        string res = transcriptionmodel.call(new classpathresource("2024052702.mp3"));
        system.out.println(res);
    }
}
配置属性
    @test
    public void testtranscription2(){
        //创建模型属性,采用 whisper-1 语音模型
        openaiaudiotranscriptionoptions options = new openaiaudiotranscriptionoptions().builder()
                .withmodel(openaiaudioapi.whispermodel.whisper_1.getvalue())
                .build();
        audiotranscriptionresponse res = transcriptionmodel.call(
            new audiotranscriptionprompt(new classpathresource("2024052702.mp3"), options));
        //获取翻译内容
        string output = res.getresult().getoutput();
        system.out.println(output);
    }

语音转文字模型属性可以查看 org.springframework.ai.autoconfigure.openai.openaiaudiotranscriptionproperties,也可以在查看更详细信息。当然可以在 yml 配置中配置属性,如 openaiaudiotranscriptionproperties 上的注解,以 spring.ai.openai.audio.transcription 开头,例如采用 whisper-1 模型

spring:
  ai:
    openai:
      audio:
        transcription:
          options:
            model: whisper-1

文字转语音

基础使用

主要类 org.springframework.ai.openai.openaiaudiospeechmodel,快照版本不同,可能名字不一样,可以查看 org.springframework.ai.autoconfigure.openai.openaiautoconfiguration 中的文字转语音类是哪个。

import jakarta.annotation.resource;
import org.junit.jupiter.api.test;
import org.springframework.ai.openai.openaiaudiospeechmodel;
import org.springframework.boot.test.context.springboottest;
import java.io.fileoutputstream;
import java.io.ioexception;
@springboottest
public class audiotest2 {
    @resource
    private openaiaudiospeechmodel speechmodel;
    //byte数组转文件
    private void bytearraytofile(byte[] bytearray, string filepath) throws ioexception {
        fileoutputstream fos = new fileoutputstream(filepath);
        fos.write(bytearray);
        fos.close();
    }
    @test
    public void testspeech() throws ioexception {
        byte[] res = speechmodel.call("我爱北京");
        bytearraytofile(res,"d:\\project\\ai\\openai\\speech\\1.mp3");
    }
}
属性配置
    @test
    public void testspeech2() throws ioexception {
        //采用 tts-1-hd 模型
        openaiaudiospeechoptions options = new openaiaudiospeechoptions().builder()
                .withmodel(openaiaudioapi.ttsmodel.tts_1_hd.getvalue())
                .build();
        speechprompt prompt = new speechprompt("我爱北京", options);
        speechresponse res = speechmodel.call(prompt);
        byte[] bytes = res.getresult().getoutput();
        bytearraytofile(bytes,"d:\\project\\ai\\openai\\speech\\1-hd.mp3");
    }

文字转语音模型属性可以查看 org.springframework.ai.autoconfigure.openai.openaiaudiospeechproperties,也可以在查看更详细信息。当然可以在 yml 配置中配置属性,如 openaiaudiospeechproperties 上的注解,以 spring.ai.openai.audio.speech 开头,例如采用 tts-1-hd 模型

spring:
  ai:
    openai:
      audio:
        speech:
          options:
            model: tts-1-hd

ollama

免费资源网,https://freexyz.cn/
返回顶部
顶部
网站地图