1.前情提要

        最近在学做关于mcp的东西,因为教学视频上使用的gpt-4o的模型,博主因为没有钱,只能对接一下免费的模型,所以选择了硅基流动。

2.具体实现

        添加相关的配置信息在application.yml中

    openai:
      base-url: https://api.siliconflow.cn
      api-key: xxxx 

实现相应的配置类

@Configuration
@Slf4j
public class OpenAIConfig {


    @Bean
    public OpenAiApi openAiApi(@Value("${spring.ai.openai.base-url}") String baseUrl,@Value("${spring.ai.openai.api-key}") String apiKey){
        return OpenAiApi.builder()
                .baseUrl(baseUrl)
                .apiKey(apiKey)
                .build();
    }
    @Bean
    public OpenAiChatModel openAiChatModel(OpenAiApi openAiApi){
        OpenAiChatOptions options = OpenAiChatOptions.builder()
                .model("Qwen/QwQ-32B")
                .temperature(0.7)
                .maxTokens(2048)
                .build();
        return new OpenAiChatModel(
                openAiApi,
                options
        );
    }
    @Bean
    public ChatClient chatClient(OpenAiChatModel openAiChatModel, @Qualifier("syncMcpToolCallbackProvider") ToolCallbackProvider syncMcpToolCallbackProvider, ChatMemory chatMemory){
        DefaultChatClientBuilder defaultChatClientBuilder = new DefaultChatClientBuilder(openAiChatModel, ObservationRegistry.NOOP,(ChatClientObservationConvention) null);
        return defaultChatClientBuilder
                .defaultTools(syncMcpToolCallbackProvider)
                .defaultAdvisors(new PromptChatMemoryAdvisor(chatMemory))
                .build();
//                .defaultOptions(OpenAiChatOptions.builder()
//                        .model("Qwen/QwQ-32B")
//                        .build()).build();
    }


    @Bean
    public ChatMemory chatMemory(){
        return new InMemoryChatMemory();
    }
}

注意事项,如果这边不自己写OpenAiChatModel,那么代码会根据spring ai的版本去选择默认模型,博主使用的spring ai版本是1.0.0-M6所以她默认会选择gpt4o-mini的这个模型。 

3.测试

        书写测试类

@Slf4j
@RunWith(SpringRunner.class)
@SpringBootTest
public class MCPTest {
    @Resource
    private ChatClient chatClient;

    @Test
    public void test_tool(){
        String userInput = "有哪些工具可以使用";
        System.out.println("\n>>> QUESTION:" + userInput);
        System.out.println("\n>>> ASSISTANT:" + chatClient.prompt(userInput).call().content());
    }

}

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐