springboot接入springai-openAi代理和智谱ai调用示例

这里写自定义目录标题

背景

一说到调用openAI的api或者做一些小项目,大部分例子都是python或者node实现的,后来发现spring出了对于openai的支持框架,所以尝试用一用。这里是SpringAI的地址,有兴趣的可以去官网看:Spring AI

配置

首先声明,因为我是从0搭建的项目,所以我用的全部都是最新版,JDK22,springboot3.3.0,以下是对于spring AI的引用:

java 复制代码
<properties>
        <java.version>17</java.version>
        <spring-ai.version>1.0.0-M1</spring-ai.version>
        <spring-cloud.version>2023.0.0</spring-cloud.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-zhipuai-spring-boot-starter</artifactId>
        </dependency>

因为众所周知的原因,国内调用openAI是掉不通的,所以就出现了众多的代理服务,所以代码中也不能去调用openAI的官方域名,要改成自己的配置,此处打广告:代理地址,可以通过我的推荐链接注册:smnet1,会赠送¥1000 token

如下:

java 复制代码
spring:
  ai:
    openai:
      # 全局配置
      api-key: sk-this-is-key # 申请的api-key
      base-url: https://api.smnet1.asia/ #代理地址,可以通过我的推荐链接注册:https://api.smnet1.asia/register?aff=xg61,会赠送¥1000 token
      # 嵌入API配置
      embedding:
        options:
          model: kimi  #我使用的代理支持多种模型,所以这里填写自己想用的模型就可以
      # 聊天API配置
      chat:
        #指定某一个API配置(覆盖全局配置)
        api-key: sk-this-is-key # 申请的api-key
        base-url: https://api.smnet1.asia/ #openAi访问地址(不写默认)
        options:
          model: kimi #我使用的代理支持多种模型,所以这里填写自己想用的模型就可以
    zhipuai:
      api-key: this-is-zhipu-key # 申请的api-key
      base-url: https://open.bigmodel.cn/api/paas/ #填写zhipu的访问地址
      chat:
        enabled: true

具体代码

配置搞好了,就到了实际使用的部分,这个真的开箱即用,如果没啥个性化需求的话,不需要另外的配置了,直接开调:

java 复制代码
@RestController
@RequestMapping("/ai")
public class ChatController {

    @Autowired
    private OpenAiChatModel chatClient;

    @GetMapping(value = "/easyChat", params = "message", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
    public Flux<ServerSentEvent<String>> easyChat(@RequestParam String message) {
        System.out.println(1111);
        //Prompt prompt = new Prompt(message); 如果这里不想另外指定,直接用这个就可以
        Prompt prompt = new Prompt(message, OpenAiChatOptions.builder()
                .withModel("kimi") //大模型用哪个
                .withTemperature(0.9f) //温度高,更发散,准确性降低,温度低,更保守,准确性高
                .build());
        System.out.println(chatClient.call(prompt)); //如果想直接拿到结果,用这个call方法就可以
        

//下面是流类型的返回,一个字一个字的返回,如果你像我一样用kimi,kimi不支持这样,需要用
        return chatClient.stream(prompt)
                .filter(Objects::nonNull)
                .filter(chatResponse -> chatResponse.getResults() != null)
                .flatMap(chatResponse -> Flux.fromIterable(chatResponse.getResults()))
                .filter(Objects::nonNull)
                .map(Generation::getOutput)
                .filter(Objects::nonNull)
                .filter(content -> Objects.nonNull(content.getContent()))
                .map(AssistantMessage::getContent)
                .filter(Objects::nonNull)
                .map(content -> ServerSentEvent.builder(content).build())
                .doOnNext(System.out::println)
                .concatWith(Flux.just(ServerSentEvent.builder("complete").build())); // Optionally, you can add a completion signal
    }
}

总结

现在想使用大模型真的门槛超低了,不管是直接使用还是api调用,怎么用这个问题解决起来还是很快的,不过我的问题大部分还是不知道用它做什么,我自己的能力不足以支撑我很好的使用它。

相关推荐
天天爱吃肉821810 分钟前
跟着创意天才周杰伦学新能源汽车研发测试!3年从工程师到领域专家的成长秘籍!
数据库·python·算法·分类·汽车
大巨头21 分钟前
sql2008 数据库分页语句
数据库
m0_7155753422 分钟前
使用PyTorch构建你的第一个神经网络
jvm·数据库·python
CODECOLLECT23 分钟前
技术解析|MDM移动设备管理系统无终身买断制度的底层逻辑
人工智能
北京迅为27 分钟前
《【北京迅为】itop-3568开发板NPU使用手册》- 第 7章 使用RKNN-Toolkit-lite2
linux·人工智能·嵌入式·npu
我是一只puppy33 分钟前
使用AI进行代码审查
javascript·人工智能·git·安全·源代码管理
阿杰学AI34 分钟前
AI核心知识91——大语言模型之 Transformer 架构(简洁且通俗易懂版)
人工智能·深度学习·ai·语言模型·自然语言处理·aigc·transformer
esmap36 分钟前
ESMAP 智慧消防解决方案:以数字孪生技术构建全域感知消防体系,赋能消防安全管理智能化升级
人工智能·物联网·3d·编辑器·智慧城市
LaughingZhu41 分钟前
Product Hunt 每日热榜 | 2026-02-08
大数据·人工智能·经验分享·搜索引擎·产品运营
芷栀夏1 小时前
CANN ops-math:筑牢 AI 神经网络底层的高性能数学运算算子库核心实现
人工智能·深度学习·神经网络