Spring AI Alibaba 项目接入兼容 OpenAI API 的大模型

1 依赖

主要的 maven 依赖如下所示:

jdk 21 + springboot 3.4.5 + spring-ai-alibaba-starter-dashscope 1.0.0.2 + spring-ai-openai 1.0.0

bash 复制代码
<properties>
    <java.version>21</java.version>
    <spring-ai.version>1.0.0</spring-ai.version>
    <spring-ai-alibaba.version>1.0.0.2</spring-ai-alibaba.version>
    <spring-boot.version>3.4.5</spring-boot.version>
</properties>


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>com.alibaba.cloud.ai</groupId>
            <artifactId>spring-ai-alibaba-bom</artifactId>
            <version>${spring-ai-alibaba.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-dependencies</artifactId>
            <version>${spring-boot.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>

    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter-dashscope</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--接入兼容OpenAI api的大模型-->
    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-openai</artifactId>
    </dependency>

</dependencies>

<build>
    <plugins>
        <!-- Maven 编译器插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.11.0</version>
            <configuration>
                <source>21</source>
                <target>21</target>
                <parameters>true</parameters> <!-- 支持参数名保留 -->
                <compilerArgs>
                    <arg>-Xlint:unchecked</arg>
                    <arg>-Xlint:deprecation</arg>
                </compilerArgs>
            </configuration>
        </plugin>

        <!-- Spring Boot Maven 插件 -->
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <version>${spring-boot.version}</version>
        </plugin>

        <!-- 资源处理插件 -->
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-resources-plugin</artifactId>
            <version>3.3.1</version>
            <configuration>
                <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
    </plugins>
</build>

2 创建模型的 ChatClient

创建兼容 OpenAI API 的模型的 ChatClient 配置类,用于模型的调用。参考以下方法,可以为不同的模型创建不同的配置类。以火山引擎某模型为例,代码如下所示。

java 复制代码
@Configuration
public class OpenAIChatClientConfig {

    /**
     * 火山引擎模型baseUrl
     */
    @Value("${volces.baseUrl:test}")
    private String volcesBaseUrl;

    /**
     * 火山引擎模型apiKey
     */
    @Value("${volces.apiKey:test}")
    private String volcesApiKey;

    /**
     * 火山引擎模型-豆包模型v1
     */
    @Value("${volces.model.doubaoV1:test}")
    private String volcesModelDoubaoV1;


    // 获取火山引擎-豆包模型v1
    @Bean("chatClient4VolcesDoubaoV1")
    public ChatClient createChatClient4VolcesDoubaoV1() {
        OpenAiApi baseOpenAiApi = OpenAiApi.builder()
                .baseUrl(volcesBaseUrl)
                .apiKey(volcesApiKey)
                .completionsPath("/chat/completions")
                .build();

        OpenAiChatModel chatModel = OpenAiChatModel.builder()
                .openAiApi(baseOpenAiApi)
                .defaultOptions(OpenAiChatOptions.builder()
                        .model(volcesModelDoubaoV1)
                        .temperature(0.7)
                        .build())
                .build();

        return ChatClient.builder(chatModel)
                .defaultAdvisors()
                .defaultTools()
                .build();
    }


}

3 模型应用

使用上述创建的模型的 ChatClient,就可以进行模型的调用了。示例代码如下所示。

java 复制代码
@Slf4j
@RestController
@RequestMapping("/openai")
public class OpenAIChatClientController {
    private static final String DEFAULT_PROMPT = "你好,介绍下你自己!";

    @Resource
    private ChatClient chatClient4VolcesDoubaoV1;


    @GetMapping("/simple/chat")
    public String simpleChat(String prompt) {
        if (StringUtils.isBlank(prompt)) {
            prompt = DEFAULT_PROMPT;
        }
        String content;
        try {
            content = chatClient4VolcesDoubaoV1.prompt(prompt).call().content();
        } catch (Exception e) {
            log.error("simpleChat error", e);
            throw new RuntimeException(e.getMessage());
        }
        log.info("simpleChat --> \n prompt ={}, \n content = {}", prompt, content);
        return content;
    }


}
相关推荐
视觉语言导航30 分钟前
CVPR-2025 | 具身导航指令高效生成!MAPInstructor:基于场景图的导航指令生成Prompt调整策略
人工智能·机器人·具身智能
RoboWizard36 分钟前
移动固态硬盘连接手机无法读取是什么原因?
java·spring·智能手机·电脑·金士顿
wanhengidc36 分钟前
云手机与人工智能之间的关系
人工智能·智能手机
Sic_MOS_7801682442 分钟前
超高密度2kW GaN基低压电机驱动器的设计
人工智能·经验分享·汽车·集成测试·硬件工程·能源
笨蛋不要掉眼泪1 小时前
SpringBoot项目Excel成绩录入功能详解:从文件上传到数据入库的全流程解析
java·vue.js·spring boot·后端·spring·excel
老坛程序员1 小时前
抓包解析MCP协议:基于JSON-RPC的MCP host与MCP server的交互
人工智能·网络协议·rpc·json·交互
努力毕业的小土博^_^1 小时前
【深度学习|学习笔记】详细讲解一下 深度学习训练过程中 为什么 Momentum 可以加速训练?
人工智能·笔记·深度学习·学习·momentum
飞哥数智坊1 小时前
DeepSeek 节前突袭发布 V3.2-Exp:长文本推理成本直降75%!
人工智能·deepseek
清风吹过1 小时前
少样本学习论文分享:多模态和类增量学习
论文阅读·人工智能·深度学习·学习·机器学习