建立我的第一个商业AI代理的三个月,在客户演示期间,一切都崩溃了。
本来应该是一个无缝的自主工作流,变成了反复澄清请求和不一致的决定的令人尴尬的循环。客户仍然有礼貌,但显然感到失望。
他们离开后,我花了几个小时来分析失败,发现我从根本上误解了代理建筑 – 我建立了一个过度复杂的系统,决策界限较差,没有明确的推理路径。
这种失败改变了我的方法,并成为了我如何解释这些系统的基础。一旦您了解了核心原则,建立有效的代理就会变得非常简单。

我讨厌当人们弄乱这些东西时,所以让我们保持简单。
AI代理是:(1)逐步考虑问题,(2)在需要时连接到外部工具,(3)从他们的动作中学习以改善随着时间的推移。
与仅响应提示的聊天机器人不同,代理商主动执行并通过任务进行工作。它们是让某人回答您有关数据问题的区别,并让某人真正为您分析这些数据。
在代理之前,我们将AI解决方案构建为单独的,断开的组件 – 一种用于理解文本的模型,另一个用于生成代码的模型,而另一个用于处理图像的模型。
这种零散的方法(1)迫使用户手动管理工作流程,(2)在不同系统之间移动时的上下文消失,并且(3)为每个过程步骤构建自定义集成所需的(3)。
代理改变了这个范式。
与传统的模型处理孤立的任务不同,代理商可以管理各种功能,同时保持对整个任务的总体理解。
代理商不仅遵循指示 – 它们根据在此过程中所学到的知识进行适应并做出明智的决定,类似于我们人类的运作方式。
让我们通过查看特定任务来了解代理商的功能:分析媒体上的文章。
传统的AI将其分为孤立的步骤 – 总结,提取关键术语,分类内容并产生见解 – 每个步骤都需要明确的人类协调。
限制不仅是孤立地工作,而且您必须手动对整个过程进行测序,明确管理步骤之间的知识转移,并根据中间结果独立确定需要哪些其他操作。
相反,基于代理的方法自主执行每个步骤,而不会失去更广泛的目标。
AI代理基于三个基本原则:
- 国家管理:代理商的工作记忆跟踪有关其学到的知识和旨在完成的环境的上下文
- 决策:根据当前知识确定哪种方法有意义的代理
- 工具使用:代理知道哪种工具解决了每个特定问题
现在您了解了什么是AI代理以及它们为何重要的原因,让我们使用Langgraph构建一个AI代理 – Langchain的框架来构建强大的AI代理。
我真正喜欢Langgraph的是,它使您可以将代理商的思想和动作映射为图形。每个节点代表功能(例如搜索Web或写作代码),以及节点(边)控制信息流之间的连接。
当我开始建造代理时,这对我来说是点击点击,因为我实际上可以看到我的代理思维过程。
让我们看看如何使用Langgraph创建文本分析代理。
该代理商将阅读文章,弄清楚它们的含义,提取重要元素并提供干净的摘要 – 本质上是您的个人研究助理。
首先,您需要设置开发环境。
步骤1 – 创建一个项目目录:
mkdir ai_agent_project cd ai_agent_project
步骤2 – 创建并激活虚拟环境:
#在Windows上
Python -M Venv Agent_env Agent_env \ Scripts \ AIVICATE
#在MacOS/Linux上
Python3 -M Venv Agent_env source Agent_env/bin/activate
步骤3 – 安装必要的软件包:
PIP安装Langgraph Langchain Langchain-Openai Python-Dotenv
第4步 – 设置您的OpenAi API:
我将GPT-4O Mini用作代理商的大脑,但是您可以将其交换为您喜欢的任何LLM。如果您没有API密钥:
- 用Openai创建一个帐户
- 导航到API键部分
- 单击“创建新的秘密键”
- 复制您的API密钥
步骤5-创建一个.env文件:
#在Windows上
echo openai_api_key = your-api-key-here> .env
#在MacOS/Linux上
echo“ openai_api_key = your-api-key-here”> .env
用OpenAI API键替换“您的AP-KEY-HERY”。
步骤6 – 创建一个名为test_setup.py
的测试文件
Python
导入操作系统
来自dotenv import load_dotenv
来自langchain_openai进口chatopenai
#加载环境变量
load_dotenv()
#初始化chathopenai实例
llm = chathopenai(型号=“ gpt-4o-mini”)
#测试设置
响应= llm.invoke(“你好!你在工作吗?”)print(wendesp.content)
第7步 – 运行测试:
python test_setup.py
恭喜,如果您收到答复,您的环境已准备好进行代理建设!
首先,导入必要的库:
导入操作系统
通过输入导入打字,列表
摘自langgraph.graph Import stategraph,结束
来自langchain.prompts导入提示网板
来自langchain_openai进口chatopenai
来自langchain.schema导入人类
StateGraph
管理代理组件之间的信息流。 PromptTemplate
创建一致的说明, ChatOpenAI
将OpenAI的Char模型连接到Power Agent的思维。
我们的代理需要内存来跟踪其进度,我们可以使用TypedDict创建它:
#原始问题或任务
班级状态(TypedDict):文字:
#跟踪代理商的思想和决定
STR分类:
#存储工具中的中间结果
str实体:列表[str]摘要:str
该结构使我们的代理人记住您的要求,跟踪其推理,存储工具数据并准备最终答案。使用TypeDict
提供类型安全性,警告我们如果我们存储不正确的数据类型,这简化了调试。
现在,我们的经纪人有了记忆,让我们给它一些思考的功能!
llm = chatopenai(型号=“ gpt-4o-mini”,温度= 0)
设置温度= 0可确保我们的代理人始终选择最有可能的响应 – 这对于遵循特定推理模式的代理至关重要。作为复习,温度充当LLMS的“创造力旋钮”:
- 温度= 0:集中,确定性的响应
- 温度= 1:更多的创意输出
- 温度= 2:野性,有时不连贯的想法
如果您的经纪人做出奇怪的决定,请先检查您的温度设置!
现在,我们将为代理商构建专门的工具,每个工具都处理特定的任务类型。
首先,我们的分类功能:
def Classification_node(状态:状态):
”“”
将文本分类为预定义的类别之一。
参数:
状态(状态):当前状态词典包含文本进行分类
返回:
dict:包含类别结果的“分类”键的字典
类别:
- 新闻:时事的事实报道
- 博客:个人或非正式网络写作
- 研究:学术或科学内容
- 其他:不符合上述类别的内容
”“”
#定义一个提示模板,该模板要求模型对给定文本进行分类
提示=提示网板(
input_variables = [“ text”],
template =“将以下文本分类为一个类别之一:新闻,博客,研究或其他类别。\ n \ ntext:{text} \ n \ ncategory:”
)
#用状态的输入文本格式化提示
messages = humanMessage(content = stress.format(text = state [“ text”]))
#调用语言模型以根据提示进行分类
分类= llm.invoke([消息])。content.strip()
#返回词典中的分类结果
返回{“分类”:分类}
此功能使用提示模板为我们的AI模型提供明确的说明。该功能采用我们当前的状态(包含我们正在分析的文本)并返回其分类。
接下来,我们的实体提取能力:
def entity_extraction_node(状态:状态):
#功能以识别和提取从文本中提取命名实体
#按类别组织(人员,组织,位置)
#为实体提取提示创建模板
#指定要查找的实体和格式(逗号分隔)
提示=提示网板(
input_variables = [“ text”],
template =“从以下文本中提取所有实体(人,组织,位置)。将结果作为逗号分隔列表提供。\ n \ ntext:{text} \ n \ nentities:''
)
#格式用状态文字和人类包装的提示格式化
messages = humanMessage(content = stress.format(text = state [“ text”]))
#发送到语言模型,获取响应,清洁空格,分为列表
实体= llm.invoke([消息])。content.strip()。split(“,”)
#返回词典带有实体列表,要合并为代理状态
返回{“实体”:实体}
此功能处理文档并返回关键实体列表,例如重要名称,组织和地点。
最后,我们的摘要能力:
def summarize_text(state):
#为摘要提示创建模板
#这告诉模型以一个句子中的输入文本总结
summarization_prompt = stripttemplate.from_template(
“”“在一个简短句子中总结以下文本。
文字:{输入}
概括:”””
)
#通过将提示模板连接到语言模型来创建链
#“ |”操作员将提示的输出输出到模型中
链= summarization_prompt | LLM
#用“状态词典”的输入文本执行链
#这将文本汇总到模型
响应=链。invoke({“ input”:state [“ input”]})
#从模型的响应中提取的摘要返回词典
#这将合并到代理的状态
返回{“摘要”:wendesp.content}
此功能将文档提炼成其要点的简明摘要。
这些技能结合在一起,使我们的代理商能够理解内容类型,确定关键信息并创建可消化的摘要 – 每个功能都遵循采用当前状态,处理它并将有用信息返回下一个功能的相同模式。
现在,我们将这些功能连接到协调的工作流程:
工作流=状态图(状态)
#将节点添加到图表
workflow.add_node(“ classification_node”,classification_node)
workflow.add_node(“ entity_extraction”,entity_extraction_node)
workflow.add_node(“摘要”,summarization_node)
#将边缘添加到图表
workflow.set_entry_point(“ classification_node”)#设置图形的入口点
workflow.add_edge(“ classification_node”,“ entity_extraction”)
workflow.add_edge(“ entity_extraction”,“摘要”)
workflow.add_edge(“摘要”,结束)
#编译图形
app = workflow.compile()
恭喜!
您已经建立了一个从分类到实体提取到以协调的顺序汇总的代理,允许其理解文本类型,识别重要实体,创建摘要,然后完成该过程。

现在让我们用示例文本测试我们的代理:
#定义有关人类MCP的示例文本以测试我们的代理
sample_text =“”
Anthropic的MCP(模型上下文协议)是一个开源强大的功率,使您的应用程序可以在各种系统中毫不费力地与API进行交互。
”“”
#用我们的示例文本创建初始状态
state_input = {“ text”:sample_text}
#在我们的示例文本上运行代理的完整工作流程
结果= app.invoke(state_input)
#打印结果的每个组件:
# - 分类类别(新闻,博客,研究或其他)
打印(“分类:”,结果[“分类”])
# - 提取的实体(人,组织,位置)
打印(“ \ nentities:”,结果[“实体”])
# - 文本生成的摘要
打印(“ \ nsummary:”,结果[“摘要”])
运行此代码通过每个功能处理文本:
- 分类:技术
- 实体:['Anthropic','MCP',“模型上下文协议”]
- 摘要:Anthropic的MCP是一种开源协议,可与各种API系统无缝应用程序交互。
令人印象深刻的不仅是最终结果,而且每个阶段如何基于上一个阶段。这反映了我们自己的阅读过程:我们首先确定内容类型,然后确定重要的名称和概念,最后创建所有连接所有内容的心理摘要。
这种代理建设方法远远超出了我们的技术示例。您可以使用类似的设置来:
- 个人发展文章 – 对增长领域进行分类,提取可行的建议并总结关键见解
- 创业创始人的故事 – 认识商业模式,资金模式和增长策略
- 产品评论 – 确定功能,品牌和建议
我们的代理在我们设计的节点和连接的刚性框架内工作。
这种可预测的限制了其适应性。与人类不同,代理商遵循固定的途径,在面对意外情况时不能枢转。
上下文理解是另一个限制。该代理可以处理文本,但缺乏人类自然掌握的更广泛的知识和文化细微差别。代理在提供的文本范围内运行,尽管添加Internet搜索可以帮助补充其知识。
黑匣子问题也存在于代理系统中。我们看到输入和输出,但没有内部决策。诸如GPT-O1或DeepSeek R1之类的推理模型通过展示其思维过程提供了更大的透明度,尽管我们仍然无法完全控制内部发生的事情。
最后,这些系统不是完全自主的,需要人类的监督,尤其是用于验证产出和确保准确性。与任何其他AI系统一样,最好的结果来自将AI功能与人类的监督相结合。
了解这些限制有助于我们建立更好的系统,并确切知道何时需要介入。最佳结果来自将AI功能与人类专业知识相结合。
回顾我令人尴尬的客户演示失败,我现在认识到了解代理人的局限性对于成功至关重要。我过度复杂的系统崩溃了,因为我忽略了代理体系结构的基本约束。
通过接受代理:(1)需要清晰的框架,(2)在定义的途径内运行,(3)作为部分黑匣子操作,(4)需要人类的监督,我已经建立了实际提供结果而不是无尽的澄清循环的系统。
这种痛苦的演示教会了我AI开发中最有价值的教训:有时候,建立非凡的事物的途径始于理解AI无法做的事情。
了解这些局限性并不能减少代理技术,这使其真正有用。这就是演示崩溃的演示与提供结果的解决方案之间的区别。
👉在LinkedIn上与我联系!
我分享日常可行的见解,技巧和更新,以帮助您避免昂贵的错误并保持在AI世界中的领先地位。在这里关注我:
👉不要错过我的新闻通讯!
我的技术受众加速器充满了可行的文案写作和构建策略,这些策略帮助数百名专业人士脱颖而出并加速了他们的成长。立即订阅以保持循环:

版权声明
本文为本站原创内容,转载需注明文章来源(https://www.eiefun.com),另:文中部分素材可能会引用自其他平台,如有侵权或其它,请联系 admin@eiefun.com,我们会第一时间配合删除