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
在线版本发现就没问题了,我发现这个模型选择非常重要。
使用国外的模型还经常都会返回英文。