SpringAI MCP学习
0
最近几年AI大模型非常火,所以现在MCP非常火,对模型进行统一管理,主要是能够自定义一些提示功能引导模型正确输出。
刚好最近SpringAI推出了1.0.0版本,所以做了一些简单研究。
这里有个自己写的简单项目:https://gitee.com/acgist/mcp
下面是一些官方文档:
https://docs.spring.io/spring-ai/reference/index.html
https://docs.spring.io/spring-ai/reference/concepts.html
https://docs.spring.io/spring-ai/reference/api/index.html
https://docs.spring.io/spring-ai/reference/api/chatclient.html
https://docs.spring.io/spring-ai/reference/api/embeddings.html
https://docs.spring.io/spring-ai/reference/api/chat-memory.html
https://docs.spring.io/spring-ai/reference/api/vectordbs.html
https://docs.spring.io/spring-ai/reference/api/etl-pipeline.html
https://docs.spring.io/spring-ai/reference/api/retrieval-augmented-generation.html
https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html
https://docs.spring.io/spring-ai/reference/api/mcp/mcp-client-boot-starter-docs.html
https://docs.spring.io/spring-ai/reference/api/mcp/mcp-server-boot-starter-docs.html
https://docs.spring.io/spring-ai/reference/api/chat/ollama-chat.html
https://docs.spring.io/spring-ai/reference/api/embeddings/ollama-embeddings.html
https://docs.spring.io/spring-ai/reference/api/structured-output-converter.html
https://docs.spring.io/spring-ai/reference/api/testing.html
https://modelcontextprotocol.io/docs/getting-started/intro
https://modelcontextprotocol.io/specification/2025-06-18/server/tools
https://modelcontextprotocol.io/specification/2025-06-18/server/prompts
https://modelcontextprotocol.io/specification/2025-06-18/server/resources
当然也可以看中文文档,不过更新可能稍慢一点:
https://docs.springframework.org.cn/spring-ai/reference/index.html
这里记录几个问题
流式stream响应返回tool调用参数而不是直接返回结果
这个问题其实就是大模型返回时也是流式的,导致SpringAI不能判断是否需要调用tool,这个建议就是使用官方推荐的部署方式。
我这里使用的是ollama版本太低导致的,升级到最新的0.10.1使用llama3.1模型就没问题了。
提示deepseek-r1 does not support tools
标签显示deepseek是支持tool的,但是使用ollama部署就是不会调用,包括qwen2.5也是一样,感觉可能换一个模型部署工具就好了,但是没有验证。
配置tool后直接没有相关性的时候也会调用没有声明的tool导致直接返回调用参数
使用ollama和llama3.1发现调用声明的tool没问题,但是每次必然调用tool且没有相关性,导致直接返回调用参数问题。
后来改用deepseek在线版本发现就没问题了,我发现这个模型选择非常重要。
使用国外的模型还经常都会返回英文。