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


}
相关推荐
The Open Group44 分钟前
英特尔公司Darren Pulsipher 博士:以架构之力推动政府数字化转型
大数据·人工智能·架构
Ronin-Lotus1 小时前
深度学习篇---卷积核的权重
人工智能·深度学习
.银河系.1 小时前
8.18 机器学习-决策树(1)
人工智能·决策树·机器学习
敬往事一杯酒哈1 小时前
第7节 神经网络
人工智能·深度学习·神经网络
三掌柜6661 小时前
NVIDIA 技术沙龙探秘:聚焦 Physical AI 专场前沿技术
大数据·人工智能
2502_927161282 小时前
DAY 42 Grad-CAM与Hook函数
人工智能
Hello123网站2 小时前
Flowith-节点式GPT-4 驱动的AI生产力工具
人工智能·ai工具
yzx9910132 小时前
Yolov模型的演变
人工智能·算法·yolo
若天明3 小时前
深度学习-计算机视觉-微调 Fine-tune
人工智能·python·深度学习·机器学习·计算机视觉·ai·cnn
爱喝奶茶的企鹅3 小时前
Ethan独立开发新品速递 | 2025-08-19
人工智能