Quarkus+MCP=代理
该项目使用Quarkus、超音速亚原子Java框架和 模型上下文协议 使用多个MCP服务器和Quarkus+LangChain4j实现一个简单的代理应用程序。
如果您想了解更多关于Quarkus的信息,请访问其网站:https://quarkus.io/ .
在开发模式下运行应用程序
你需要 node 和 npm 已安装(用于启动mcp服务)。跟随 推荐方式 为您的系统安装。
如果你想看到内置的遥测技术,你还需要一个可用的容器环境(例如Podman或Docker),一旦应用程序启动,你可以通过转到Dev UI并找到Grafana链接来访问它。如果您没有容器环境,请在中注释掉该部分 application.properties 处理遥测。
创建一个名为的目录 playground 如果要使用,请在克隆的根文件夹中 filesystem MCP服务器(或在中更改名称 application.properties 使用其他名称,但目录必须存在)
一些MCP服务需要API密钥。以下是获取密钥的链接:
一旦你拥有了所有这些,最简单的方法是创建一个名为 .env 在您的克隆中(此文件列在 .gitignore 因此,如果您分叉此仓库并创建文件,则不会推送到GitHub)。这 .env 文件应该看起来像:
quarkus.langchain4j.mcp.bravesearch.environment.BRAVE_API_KEY=
quarkus.langchain4j.mcp.googlemaps.environment.GOOGLE_MAPS_API_KEY=
quarkus.langchain4j.mcp.slack.environment.SLACK_BOT_TOKEN=
quarkus.langchain4j.mcp.slack.environment.SLACK_TEAM_ID=
quarkus.langchain4j.openai.api-key=在开发模式下运行Quarkus时,这些变量将自动包含在内。您也可以直接将它们放入 application.properties 但请注意不要将它们签入公共源代码库!
对于生产使用,这些显然应该区别对待,存储在安全的地方,如保管库或kubernetes Secrets,并在运行时作为环境变量注入。
但对于测试,您可以在开发模式下运行应用程序,该模式支持实时编码,使用:
./mvnw compile quarkus:dev在Dev模式下,您可以使用Dev UI与您配置的LLM聊天,方法是转到“扩展”并单击“聊天”进行聊天。您会发现系统消息已从以下内容中预先填写 Bot.java
_注:_ Quarkus现在附带了Dev UI,该UI仅在开发模式下可用http://localhost:8080/q/dev/.
测试应用程序
有一个简单的前端应用程序可以测试助手访问 http://localhost:8080 你应该看到:
点击左下角的聊天框图标,发出一些示例提示,看看它是如何使用代理推理来调用各种工具的:
My name is John Doe. I am a member of a team of 2 myself and Daniel Jane. I like Asian food, while Daniel is on a strict gluten-free diet.
Please find one good restaurant in Atlanta, GA with the highest rating that meets
the team's dietary needs and preferences. Then, invite the team to a lunch
at 12pm next Wednesday using the slack channel "#lunchtime".
In your message, include the name and description of the restaurant, the time and
date of the lunch, and driving directions from Georgia World Congress Center.
Also create an ICS calendar file for me to use in my calendar in the
"playground/calendar" directory.`还有一些更简单的后续提示,比如:
- 你得出这个建议的理由是什么?
- 你是怎么选择这家餐厅的?
- 你为每一步采取了哪些行动,使用了哪些工具?
- 你为什么搜索无麸质餐厅?
- 你对团队中的每个人都有什么印象?
在Dev模式下,您还可以使用Dev UI与您配置的LLM聊天,方法是转到“扩展”并单击“聊天”进行聊天。您会发现系统消息已从以下内容中预先填写 Bot.java
_注:_ Quarkus现在附带了Dev UI,该UI仅在开发模式下可用http://localhost:8080/q/dev/.
打包和运行应用程序
应用程序可以使用以下方式打包:
./mvnw package它产生了 quarkus-run.jar 文件在 target/quarkus-app/ 目录。 请注意,这不是 _关于-jar_ 当依赖项被复制到 target/quarkus-app/lib/ 目录。
应用程序现在可以使用运行 java -jar target/quarkus-app/quarkus-run.jar.
如果你想建立一个 _关于-jar_,执行以下命令:
./mvnw package -Dquarkus.package.type=uber-jar该应用程序打包为 _关于-jar_,现在可以使用运行 java -jar target/*-runner.jar.
创建本机可执行文件
您可以使用以下命令创建本机可执行文件:
./mvnw package -Dnative或者,如果你没有安装GraalVM,你可以使用以下命令在容器中运行本机可执行构建:
./mvnw package -Dnative -Dquarkus.native.container-build=true然后,您可以使用以下命令执行本机可执行文件: ./target/research-1.0-SNAPSHOT-runner
如果您想了解有关构建本机可执行文件的更多信息,请咨询https://quarkus.io/guides/maven-tooling.
