本地大模型编程实战(14)初探智能体Agent(1)

在前面的文章中,我们了解了 LLM(大语言模型) 如何使用 tool(工具) ,现在我们开始进一步,初探 Agent(智能体) 的玩法。 其中的 tool(工具) 用于从矢量数据库中查询信息,这种方式在 RAG(Retrieval Augmented Generation,检索增强生成) 也很常用。在这种场景中,能否准确的查询出有用信息很关键,为此我们本次将使用多种大模型进行对比演练。包括: 多语言通用 LLM: llma3.1 , deepseek-r1 , qwen2.5 专用于嵌入检索的大模型: shaw/dmeta-embedding-zh , milkey/m3e , mxbai-embed-large , nomic-embed-text , all-minilm:33m 了解 Agent(智能体) tool(工具) 与 Agent(智能体) 的区别 工具往往用于大语言模型调用其它功能,比如:搜索、数据库查询、计算等;Agent(智能体) 是一个可以使用 LLM 处理复杂任务的智能体;它通常会决定: 何时调用 tool(工具) 选择哪个工具 处理工具返回的结果 ReAct(Reasoning + Acting) ReAct(Reasoning + Acting)是一种用于 Agent(智能体) 的决策方式,它结合了推理(Reasoning)和行动(Acting),让智能体能更灵活地思考和执行任务。 简单来说,ReAct 让智能体在做事情之前,先思考一下,然后再决定下一步行动,而不是盲目执行。 ReAct 的核心思路 观察环境(Observations):获取当前任务或问题的信息。 推理(Reasoning):分析当前信息,思考如何解决问题。 执行行动(Acting):基于推理结果,采取具体的行动(比如调用工具、查询数据库、与用户交互等)。 循环执行:智能体会不断重复观察 → 推理 → 行动的过程,直到任务完成。 关于 ReAct 的更多内容,请参阅:ReACT Agent Model ...

二月 11, 2025 · 4 分钟 · 火云

本地大模型编程实战(13)与外部工具交互时注入参数(4)

在使用 LLM(大语言模型) 调用工具方法时,可能会在运行时才会将类似 用户ID 的数值传递给工具。 大多数情况下,此类值不应由 LLM 控制。允许 LLM 控制 用户ID 可能会导致安全风险。 相反,LLM 应该只控制本应由 LLM 控制的工具参数,而其他参数(如用户ID)应由应用程序逻辑固定。 本文将向您展示:如何防止大模型生成某些工具参数并在运行时直接注入它们。 本文使用 llama3.1 和 MFDoom/deepseek-r1-tool-calling:7b 进行演练。 deepseek-r1 不支持 langchain 的 bind_tools 方法。 ...

二月 10, 2025 · 3 分钟 · 火云

本地大模型编程实战(12)与外部工具交互时进行人工审核(3)

本文将实践如何在 LLM(大语言模型) 调用工具函数时进行审核,即由人来确定是否应该调用工具函数。 本次使用 llama3.1 和 MFDoom/deepseek-r1-tool-calling:7b 进行演练。 deepseek-r1 不支持 langchain 的 bind_tools 方法。 ...

二月 9, 2025 · 2 分钟 · 火云

本地大模型编程实战(11)用提示词提升与外部工具交互的能力并支持deepseek(2)

在使用 LLM(大语言模型) 时,经常需要调用一些自定义的工具方法完成特定的任务,比如:执行一些特殊算法、查询天气预报、旅游线路等。 很多大模型都具备使用这些工具方法的能力,Langchain 也为这些调用提供了便利。 之前的文章介绍了 llama3.1 与工具方法交互的实际例子,不过可惜 langchain 对 deepseek 支持还不够,导致: llm.bind_tools 根据用户问题生成的工具方法签名与 llama3.1 不同,在后续在调用工具方法时报错 deepseek 返回的结果中包含了思考过程内容,显然 Langchain 还不能正确解析出最终结果,这会导致 langchain 的很多方法不能正常运行 这次我们将尝试通过以下两种方法解决 Langchain 使用 deepseek 时产生的上述问题: 使用提示词让大模型推理调用工具的方法名称和参数 使用自定义的 JsonOutputParser 处理 deepseek 返回的信息 这里使用 llama3.1 和 deepseek 等不同模型做对比,并不是为了说明孰优孰劣,而是仅仅为了技术演示需要。 ...

二月 8, 2025 · 3 分钟 · 火云

本地大模型编程实战(10)与外部工具交互(1)

某些模型能够进行工具方法调用:生成用户自定义的方法的签名并调用它。一般来说,此交互过程主要包含下面几个步骤: LLM(大语言模型) 根据用户的问题推理生成调用工具方法的名称和参数 调用工具,返回简单的结果 再次调用 LLM ,生成自然流畅的回答 下面我们来说明这一过程。 应该是因为 langchian 对 deepseek 的支持还完善,使用 deepseek-r1 无法生成工具方法签名,使用 MFDoom/deepseek-r1-tool-calling:7b 可以生成工具方法签名,但是在调用工具方法时不成功。 所以本文仅使用 llama3.1。 ...

二月 7, 2025 · 2 分钟 · 火云