蓝胖子. 2025-11-11 16:13 采纳率: 0%
浏览 7

java langchain4j传参问题

基于langchain4j和远程mcp服务搭建的一个agentdemo,有一些参数不需要大模型来解析传递,而是通过类似上下文那样传递,有办法传么

    interface Assistant {
        Result<String> chat(String userMessage);
    }


        McpTransport transport = new HttpMcpTransport.Builder()
                .sseUrl("http://localhost:9999/sse")
                .logRequests(true) // if you want to see the traffic in the log
                .logResponses(true)
                .build();
        McpClient invoiceClient = new DefaultMcpClient.Builder().key("invoiceClient").transport(transport).build();

        McpToolProvider build1 = McpToolProvider.builder().mcpClients(invoiceClient).build();

        Assistant mcpAssistant = AiServices.builder(Assistant.class)
                .chatModel(chatModel)
                .toolProvider(build1)
                .chatMemory(MessageWindowChatMemory.withMaxMessages(10))
                .build();

      //远程mcp方法
@Service
public class InvoiceToolDemo implements InvoiceToolDemoService {
    @Override
    @Tool(name = "add",description = "计算两个数的和")
    public double add(double a, double b,String name) {
        return a + b;
    }
}

add方法中,a和b是有llm解析传入,但是这个name我希望是在代码里传入的,这个有什么好的办法么,我查了相关资料,都是介绍在一个进程里传递,这种远程mcp服务的没找到相关介绍

  • 写回答

4条回答 默认 最新

  • 阿里嘎多学长 2025-11-11 16:23
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    基于 LangChain4J 和远程 MCP 服务搭建的 Agent Demo 中,有些参数不需要大模型来解析传递,而是通过类似上下文那样传递。

    LangChain4J 提供了一个 Context 类,可以用来传递额外的信息给模型。您可以在 Context 中添加需要传递的参数,然后在模型中使用 Context 来获取这些参数。

    例如,您可以在 Context 中添加一个键值对,如下所示:

    Context context = new Context();
    context.put("参数名", "参数值");
    

    然后,在模型中使用 Context 来获取这些参数:

    Assistant assistant = ...;
    Context context = assistant.getContext();
    String 参数值 = (String) context.get("参数名");
    

    如果您需要传递复杂的数据结构,例如对象或集合,可以使用 Contextput 方法来添加这些数据。

    另外,您也可以使用 LangChain4J 提供的 Chain 类来传递参数。Chain 类可以用来构建一个链式的模型调用流程,中间可以传递参数。

    例如,您可以使用 Chain 类来传递一个对象:

    Chain chain = new Chain();
    chain.add(new MyModel());
    chain.add(new MyModel());
    chain.put("参数名", "参数值");
    

    然后,在模型中使用 Chain 来获取这些参数:

    Assistant assistant = ...;
    Chain chain = assistant.getChain();
    String 参数值 = (String) chain.get("参数名");
    

    希望这些信息能够帮助您解决问题!

    评论

报告相同问题?

问题事件

  • 创建了问题 11月11日