共计 2318 个字符,预计需要花费 6 分钟才能阅读完成。
核心概念解析
AI Agent是具有自主决策能力的智能体,像具备大脑的虚拟员工。生成式 AI(Generative AI)则是生成文本 / 图像等内容的技术,好比会创作的艺术家。两者常结合使用——比如用生成式 AI 作为 Agent 的 ” 嘴巴 ” 来回答问题。

flowchart LR
A[用户输入] --> B(Agent 决策)
B --> C{需要工具吗?}
C -->| 是 | D[调用搜索引擎 / 数据库]
C -->| 否 | E[生成式 AI 创作]
D --> F[结果处理]
E & F --> G[输出响应]
开发框架选型指南
- OpenAI API:直接调用大模型,适合快速验证想法
- LangChain:像乐高积木,能灵活组装工具链(chains)
- AutoGPT:全自动 Agent,适合非技术背景使用
新手建议:从 LangChain 开始,既不会太底层也不失灵活性。
实战对话 Agent 开发
环境准备
-
安装必要库(建议 Python≥3.8)
pip install langchain openai pandas python-dotenv -
在
.env文件安全存储 API 密钥OPENAI_API_KEY=sk-yourkey SERPAPI_API_KEY=yourkey
核心代码实现
from langchain.agents import AgentType, initialize_agent
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
from langchain.tools import Tool
from langchain.utilities import SerpAPIWrapper
import pandas as pd
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 初始化记忆模块
memory = ConversationBufferMemory(memory_key="chat_history")
# 准备工具包
def analyze_dataframe(df: pd.DataFrame):
return f"数据集包含 {len(df)} 行,列名为:{', '.join(df.columns)}"
tools = [
Tool(
name="搜索引擎",
func=SerpAPIWrapper().run,
description="用于查询实时信息"
),
Tool(
name="数据分析",
func=analyze_dataframe,
description="输入 DataFrame 对象,返回基础统计信息"
)
]
# 创建 Agent
agent = initialize_agent(
tools,
ChatOpenAI(temperature=0, model="gpt-3.5-turbo"),
agent=AgentType.CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True # 打印执行过程
)
# 带异常处理的对话示例
try:
response = agent.run("最近的 AI 新闻有哪些?")
print(response)
# 演示 DataFrame 处理
df = pd.DataFrame({"产品":["A","B"], "销量":[100,200]})
response = agent.run("分析这个数据集", input_variables={"df": df})
print(response)
except Exception as e:
print(f"请求失败: {str(e)}")
关键点说明:
ConversationBufferMemory让 Agent 记住对话历史Tool类封装了搜索引擎和数据处理能力temperature=0减少生成内容的随机性
生产环境注意事项
成本控制
- 监控 Token 使用量(1Token≈1 个英文单词)
- 设置每分钟请求限制:
from tenacity import retry, stop_after_attempt @retry(stop=stop_after_attempt(3)) def safe_agent_run(query): return agent.run(query)
数据持久化
将对话历史保存到数据库:
# 使用 SQLite 示例
import sqlite3
conn = sqlite3.connect('chat_history.db')
memory.chat_memory.messages[-1].content # 获取最新消息
安全防护
添加内容过滤器:
from langchain.output_parsers import CommaSeparatedListOutputParser
blacklist = ["暴力", "敏感词"]
output_parser = CommaSeparatedListOutputParser()
def safe_output(text):
if any(word in text for word in blacklist):
return "内容不符合安全策略"
return text
进阶思考
- 评估 Agent 质量:
- 设计测试用例(如 ” 查询北京天气后推荐穿衣 ”)
-
人工评估连贯性 / 实用性
-
缓解幻觉问题:
- 限制回答来源(” 仅基于以下资料回答:…”)
- 添加置信度提示(” 我对此不太确定,但 …”)
学习建议
建议从简单任务开始,比如:
– 制作能查天气的微信机器人
– 开发自动整理会议纪要的 Agent
遇到问题时,多查阅 LangChain 官方文档(https://python.langchain.com/)和 OpenAI 社区论坛。
正文完
