首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >业务侧 RAG+Agent 落地实践:基于 LangChain 构建简易工具调用 Agent

业务侧 RAG+Agent 落地实践:基于 LangChain 构建简易工具调用 Agent

原创
作者头像
三合卓学
修改于 2026-10-08 17:22:31
修改于 2026-10-08 17:22:31
1160
举报

业务侧大模型落地包含文档预处理、RAG 知识库、Agent 工具编排、上线调优。下面实现一个具备知识库检索工具的简易 Agent,Agent 可以自主判断是否调用知识库回答业务问题。

代码语言:javascript
复制
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_core.tools import tool

# 复用上文已经构建好的vectordb向量库
retriever = vectordb.as_retriever(search_kwargs={"k":3})

@tool
def company_knowledge_search(query:str)->str:
    """用于查询企业内部制度知识库,仅业务相关问题调用此工具。入参为用户问题。"""
    docs = retriever.invoke(query)
    return "\n".join([d.page_content for d in docs])

tools = [company_knowledge_search]
llm = ChatOpenAI(model="gpt‑4o‑mini", temperature=0, api_key="your-api-key")

agent = create_openai_tools_agent(llm, tools)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, max_iterations=3)

resp = agent_executor.invoke({"input":"公司的外勤报销流程是什么?"})
print(resp["output"])

代码解析

  1. 使用 @tool 装饰器封装知识库检索为 Agent 可用工具;
  2. max_iterations=3 限制最大工具调用轮次,避免死循环;
  3. verbose=True 打印 Agent 完整思考与工具调用日志,便于调试。

运行 bug 与修复

  1. Agent 频繁错误调用知识库:tool 描述不够清晰,非业务问题也触发检索 → 完善工具注释,写明使用场景;
  2. Agent 无限循环调用工具:没有设置 max_iterations → 强制限制最大迭代轮次;
  3. 返回结果存在幻觉:知识库返回片段质量差 → 回头优化文档切片与原始数据清洗。

工程落地流程:先小批量真实数据验证,确认幻觉、异常输入可控之后,再扩大业务接入规模。通用大模型开箱即用无法直接满足业务,数据预处理、参数调优、prompt 约束是必须的工程环节。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 代码解析
  • 运行 bug 与修复
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档