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;
    }


}
相关推荐
数字供应链安全产品选型18 小时前
悬镜安全打造“中国版 Anthropic Mythos”:以AI治理AI,重构新一代数字供应链安全
人工智能·安全·重构
Tangyuewei18 小时前
2026 下半年:从更快到更可控
人工智能
qq_3164110318 小时前
AI 情感陪伴智能潮玩软硬件一体化开发案例
人工智能·python
Hyyy18 小时前
AI基础——机器学习
人工智能·ai编程
一名普通的电源工程师18 小时前
E0512XT-1WR3 适配优选 钡特电源 DF1-05D12XT|1W 隔离5V转±12V模块电源选型参数技术解析
大数据·网络·人工智能
zx11545018 小时前
大模型工具调用次数限制
人工智能·python
windliang18 小时前
Claude Code 源码分析(五):一次 Tool 调用怎样通过权限检查
前端·人工智能·面试
2601_9613914618 小时前
杭州极序时代|GEO的对抗防御与幻觉免疫工程
人工智能·极序时代geo
Think_Higher19 小时前
CID行业趋势周报|7.27—8.02:大盘表现、重点赛道与投测建议
大数据·人工智能
林澈在路上19 小时前
2026 主流 AI 写歌 APP 全面测评|零基础原创歌曲工具选购指南
大数据·人工智能·aigc·音视频·音频