分类目录归档:AI

钉钉接入Hermes

1.前往钉钉后台创建对应消息应用

支持一键创建 配置应用名称即可

2.创建完成后获取到对应的ID,前往Hermes把对应的ID配置进入

3.测试效果

发现有thinking标志但是没有回复消息

查看日志发现Hermes版本过老 执行hermes update更新

仍旧无效 排查日志
2026-06-15 10:28:51,608 INFO gateway.platforms.dingtalk: [Dingtalk] _send_emotion: reply 🤔Thinking on msg=

怀疑可能是版本不兼容问题 执行降版本指令

/Users/mac/.hermes/hermes-agent/venv/bin/python -m pip install –force-reinstall –no-cache-dir dingtalk-stream==0.23.0

无效

原因:
# 安全:限制可与机器人交互的用户
DINGTALK_ALLOWED_USERS=user-id-1 用户ID错误导致

GATEWAY_ALLOW_ALL_USERS=true 取消白名单限制 消息回复正常

LangChain

  • LangChain 是地基。它定义了最基础的组件:什么是 Model,什么是 Prompt,什么是 Memory,什么是 Tool。
    • CrewAI 和 AutoGen 在底层大量复用了 LangChain 的概念(尤其是 CrewAI,它直接依赖 LangChain 的组件)。
    • 学习策略:只要懂了 LangChain 的核心概念(Chain, Agent, Tool),看 CrewAI 的代码就像看“封装好的高级脚本”,非常容易上手。
  • LangGraph 是关键进化:它是 LangChain 团队为了解决复杂 Agent 流程控制而推出的新核心库,代表了从“链式(Chain)”到“图式(Graph)”的思维转变。

基础概念

  1. 模型(Models):LLM的“大脑”
    模型是LangChain的核心动力,负责理解文本、生成内容。LangChain支持几乎所有主流LLM(比如OpenAI、GPT-4、LLaMA、Claude等),并统一了调用接口。

两种核心模型类型:

LLM:输入文本,输出文本(比如GPT-3.5的text-davinci-003)。

ChatModel:输入“消息列表”(比如用户消息、系统提示),输出“消息”(更适合对话场景,比如GPT-4的gpt-4)。

作用:负责核心的“思考”和“生成”工作,是整个应用的“智能来源”。

  1. 提示(Prompts):给模型的“指令”
    提示词是告诉模型“该做什么”的指令。LangChain的PromptTemplate能帮你动态生成提示词,避免手动拼接字符串的麻烦。

示例:
如果你想让模型生成“给产品起名字”,可以定义一个模板:
PromptTemplate(input_variables=[“product”], template=”给一个{product}起3个有科技感的名字”)
当传入product=”智能手表”时,自动生成提示词:“给一个智能手表起3个有科技感的名字”。

作用:精准控制模型的输出,让模型按你的需求工作(比如摘要、翻译、问答等)。

  1. 链(Chains):组件的“连接器”
    单个模型+提示只能完成简单任务(比如生成一句话),但复杂任务需要多步操作(比如先翻译再总结)。链就是把多个组件(模型、提示、其他链)按顺序组合起来的工具。

常见链类型:

LLMChain:最基础的链,由“提示模板”+“模型”组成,直接输出结果。

SequentialChain:按顺序执行多个链(比如链1的输出作为链2的输入)。

RouterChain:根据输入内容“选择”不同的链执行(比如判断问题类型,再调用对应链)。

示例:用SequentialChain实现“先翻译英文到中文,再总结中文内容”:
链1(翻译)→ 链2(总结),输入英文,输出总结后的中文。

  1. 记忆(Memory):让模型“记住”历史
    默认情况下,LLM是“健忘的”——每次调用都是独立的,不知道之前的对话。记忆组件的作用是保存对话历史,并把历史内容“喂”给模型,让对话有连贯性。

常见记忆类型:

ConversationBufferMemory:简单保存所有对话历史(适合短对话)。

ConversationSummaryMemory:自动总结对话历史(适合长对话,避免内容过长)。

ConversationTokenBufferMemory:按“Token数量”保存历史(防止超过模型输入限制)。

示例:聊天机器人中,用ConversationBufferMemory保存“用户问了什么”和“AI答了什么”,每次新对话时,把历史内容和新问题一起传给模型,模型就知道上下文了。

  1. 工具(Tools):模型的“外挂能力”
    LLM的知识截止到训练数据(比如GPT-4截止到2023年10月),也不会实时计算、查天气。工具是模型可以调用的外部能力,帮模型弥补这些缺陷。

常见工具类型:

搜索引擎(比如Google Search,查实时信息);

计算器(比如llm-math,做精确计算);

数据库(比如SQL工具,查数据库数据);

自定义函数(比如你自己写的“查天气”API)。

作用:让模型从“只能凭记忆回答”变成“能主动调用工具获取信息”。

  1. 代理(Agents):工具的“决策者”
    有了工具,谁来决定“什么时候用什么工具”?——代理。

代理是一个“决策者”:它会分析用户的问题,判断是否需要调用工具(如果需要,调用哪个工具),并根据工具返回的结果生成最终答案。

常见代理类型:

Zero-shot React Description:根据工具的“描述”直接决定调用(适合简单场景);

Conversational React Description:带记忆的代理(适合对话场景,能结合历史决定调用);

Structured Input:处理结构化输入(比如表格数据)的代理。

示例:用户问“今天北京的气温是多少?”
代理分析:“这个问题需要实时数据,模型不知道,所以调用天气工具”→ 调用工具获取气温→ 整理结果回答用户。