Spring AI(聊天程序)

接上篇:Spring AI(基础开发准备)
 

1、聊天程序(调用一次接口)

/**
 * 聊天程序
 * @author ithailin
 */
@RestController
@RequestMapping("/ai")
public class ChatController {
    private static final Logger logger = LoggerFactory.getLogger(ChatController.class);

    /**
     * spring-ai 自动装配的,可以注入使用
     */
    @Autowired
    private OpenAiChatModel openAiChatModel;

    /**
     * 调用openai的接口
     * default String call(String message){}
     * @param msg:我们提问的消息
     * @return
     */
    @RequestMapping("/chat")
    public String chat(String msg){
        logger.info("msg:{}",msg );
        String called = openAiChatModel.call(msg);
        return called;
    }

    /**
     * 调用openai的接口
     * public ChatResponse call(Prompt prompt){}
     * @param msg:我们提问的消息
     * @return
     */
    @RequestMapping("/chat2")
    public Object chat2(String msg){
        logger.info("msg:{}",msg );
        ChatResponse chatResponse = openAiChatModel.call(new Prompt(msg));
        return chatResponse;
    }

    /**
     * 调用openai的接口
     * public ChatResponse call(Prompt prompt){}
     * @param msg:我们提问的消息
     * @return
     */
    @RequestMapping("/chat3")
    public Object chat3(String msg){
        logger.info("msg:{}",msg );
        OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
                //chatGpt模型版本,32k是参数量,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
                .withModel("gpt-4-32k")
                //温度越高,回答的准确率会下降,温度越低,回答的准确率越好,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
                .withTemperature(0.4F)
                .build();
        Prompt prompt = new Prompt(msg, openAiChatOptions);
        ChatResponse chatResponse = openAiChatModel.call(prompt);
        return chatResponse;
    }

    /**
     * 调用openai的接口
     * public Flux<ChatResponse> stream(Prompt prompt){}
     * @param msg:我们提问的消息
     * @return
     */
    @RequestMapping("/chat4")
    public Object chat4(String msg){
        logger.info("msg:{}",msg );
        OpenAiChatOptions openAiChatOptions = OpenAiChatOptions.builder()
                .withModel("gpt-4-32k")
                .withTemperature(0.4F)
                .build();
        Prompt prompt = new Prompt(msg, openAiChatOptions);
        Flux<ChatResponse> flux = openAiChatModel.stream(prompt);
        flux.toStream().forEach(chatResponse -> {
            System.out.print(chatResponse.getResult().getOutput().getContent());
        });
        return flux.collectList();//数据的序列,一序列数据,一个一个的数据返回
    }

}
View Code

获取GPT默认版本

chatGpt模型版本、温度等相关参数配置,当前配置可在配置文件application.yml中进行设置,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的

application.yml新增配置

      chat:
        options:
          # chatGpt模型版本,32k是参数量,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
          # model: gpt-4-32k
          # 温度越高,回答的准确率会下降,温度越低,回答的准确率越好,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
          temperature: 0.3F

application.yml文件如下

spring:
  application:
    name: spring-ai
  ai:
    openai:
      # 访问open ai接口的api key
      api-key: sk-3sfER03LDLG3SDFsdlwe283JSdw023lkrmrHDND32fmREKFD
      # 访问open ai的接口地址
      base-url: https://openai.com/

      # ai聊天设置
      chat:
        options:
          # chatGpt模型版本,32k是参数量,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
          model: gpt-4-32k
          # 温度越高,回答的准确率会下降,温度越低,回答的准确率越好,若当前代码中和application配置文件中同时声明,则代码中的配置会覆盖application配置文件中的
          temperature: 0.3F
View Code

 

接下篇:Spring AI(绘图) 

posted @ 2024-07-15 11:56  DHaiLin  阅读(199)  评论(0编辑  收藏  举报