请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

是否可以通过node实现老师课程中的功能

问题描述:

老师为什么不用node来做这个课程呢,理论上python能实现的功能node也能实现,并且langchain也有node版本,那两者的主要区别是什么

相关截图:

正在回答 回答被采纳积分+3

2回答

Sam 2025-07-03 19:28:20

很棒的问题,今天也有同学在群里问了同样的问题。Node.js的LangChain库是可以使用的,但比Python版本开发体验差很多(比如base_url替换就很麻烦,没有专门的参数支持;再比如Node版本LangChain的DB工具有Bug会出现经常无法连接数据库的情况,而Python版本可以等等),同时Python版本代码更加简洁。除此之外Huggingface的模型代码大部分都是使用Python编写的,如果要结合LangChain等开发复杂AI应用时Python优势更加明显。

1 回复 有任何疑惑可以回复我~
慕尼黑2414785 2025-07-07 22:29:36

第4章,尝试用 Node 写了下,pipe链式调用的时候,FewShotChatMessagePromptTemplate 和 工具调用,Node都要比Python麻烦些。

比如工具调用,python会将自动把工具的描述、参数等信息注入到 LLM 的 function calling,但 Node 不会,需要你手动处理,将工具描述注入到 Prompt 中


0 回复 有任何疑惑可以回复我~
  • Sam #1
    方便的话可以分享一下你的代码,这样可以有更直观的对比😀
    回复 有任何疑惑可以回复我~ 2025-07-07 22:38:33
  • 慕尼黑2414785 回复 Sam #2
    回复 Sam:
    1. Pipe 和 FewShotChatMessagePromptTemplate:
    1) Python:
    chain = fewShotChatPromptTemplate | llm
    response = chain.stream(input={"text": "Good Job!")
    2) Node版本需要再转一层,即不能用 FewShotChatMessagePromptTemplate,而用字符串型 FewShotPromptTemplate (open ai提供的方案)
    const fewshot = await fewShotChatPromptTemplate.format({
      text: 'Good Job!',
    });
    const chain = ChatPromptTemplate.fromTemplate('{fewshot}').pipe(llm);
    const response = await chain.invoke({ fewshot });
    回复 有任何疑惑可以回复我~ 2025-07-11 20:02:03
  • 2. Pipe 和 Tools:
    1) Python版本
    llm_with_tools = llm.bind_tools([add])
    chain = chat_prompt_template | llm_with_tools
    resp = chain.invoke(input={"role": "计算", "domain": "数学计算", "question": "使用工具计算:100+100=?"})
    2)Node版本,需要给system prompt 传入工具描述
    export const systemMessagePromptTemplate =
      ChatMessagePromptTemplate.fromTemplate(
        '你是一位{role}专家,擅长回答{domain}领域相关问题。你可以使用以下工具:\n${toolDescriptions}.',
        'system',
      );
    export const userMessagePromptTemplate = ChatMessagePromptTemplate.fromTemplate(
      '用户的问题:{question}',
      'user',
    );
    export const chatPromptTemplate = ChatPromptTemplate.fromMessages([
      systemMessagePromptTemplate,
      userMessagePromptTemplate,
    ]);
    const tools = [adderTool];
    export const llmWithTools = llm.bindTools(tools);
    export const chain = chatPromptTemplate.pipe(llmWithTools);
    const response = await chain.invoke({
        role: '计算',
        domain: '数学计算',
        // 加入工具描述
        toolDescriptions: tools
          .map((tool) => `${tool.name}: ${tool.description}`)
          .join('\n'),
        question: '使用工具计算:100+100=?',
    });
    回复 有任何疑惑可以回复我~ 2025-07-11 20:02:20
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号