Agent的结构

——参考文献《人工智能:一种现代的方法》(第3版)

目录

1.1 Simple reflex agent(简单反射)

1.2 Model-based reflex agents(基于模型)

1.3 Goal-based agents(基于目标)

1.4 Utility-based agents(基于效用)

总结,以上四种Agent都是在选择下一步行动,并且决策过程越来越复杂。

最后说一下这些Agent程序怎么制成的——学习Agent:


Agent = 程序 + 体系结构(使Agnent能够更好执行行动的装置,例如:对于一个扫地机器人,需要传感器)

 

四种Agent程序:

• Simple reflex agents(简单反射)

• Model-based reflex agents(基于模型)

• Goal-based agents(基于目标)

• Utility-based agents(基于效用)

 

1.1 Simple reflex agent(简单反射)

最简单的一组固定事件:if……then。例如:if hungry,then eat。

  

上图是一个简单反射的示例

    

这个出现的问题就很常见了。比如肚子饿的时候,其实你这时候有肠胃炎不能吃东西,但是你通过这个反射不停的吃,那就挂了。

 

1.2 Model-based reflex agents(基于模型)

将部分可观测的环境记录到Agent的内部知识中,就是在简单反射的基础上,将一些常识性的东西教给Agent。比如,人在肠胃科+肚子饿=肠胃出问题了,不能吃东西。我不需要知道自己为什么在肠胃科,但是我要知道现在不能吃东西。

例如一个自动驾驶汽车,遇到一辆大卡车堵在前面,它不需要知道大卡车前面发生了什么,只需要知道现在有障碍,不能通行。

    

 

1.3 Goal-based agents(基于目标)

   

这个模型和前面两个有根本性的不同,它需要考虑到未来发生什么情况。比如,我的终极目标是吃东西,那么 我在肠胃科+肚子饿=现在先不吃(避免挂掉),等好了再吃

 

1.4 Utility-based agents(基于效用)

Utility:the quality of being useful

    

 

这里的效用可以理解为希望以什么样的状态或形式达成目标。比如我在肠胃科,我想吃东西,医生告诉有两种药可以治好我的病,一个吃下去就见效,但是副作用很大,一个见效时间慢但没什么副作用,那你就根据自己的偏好选择吧。

 

总结,以上四种Agent都是在选择下一步行动,并且决策过程越来越复杂。

 

最后说一下这些Agent程序怎么制成的——学习Agent:

给定一个既定标准(不可由Agent来修改),由一个评判元件在Agent学习后进行反馈,Agent通过这些反馈,把自己新学的知识归纳到性能元件进行校正。最后一个问题产生器,允许少量的自行探索,可能探索出一些当下次优,但长期而言更好的行动。

    

比如我从肠胃科出来,我太饿了,到路边拔了根草吃下去,结果肠胃炎更厉害了。这时候外在性能就要告诉我,吃草带来的损失对于整体性能的影响是负面的,所以我学到了,下次尽量不吃草来缓解饥饿问题。

### LangChain 中 Agent结构化输出方式 LangChain 是一种用于构建复杂应用程序的框架,其中的核心组件之一就是 **Agent**。Agent 背后的核心理念是通过语言模型的能力结合一系列工具或操作来完成特定的任务[^1]。 #### 什么是结构化输出? 在 LangChain 中,Agent 可以被配置为返回结构化的数据形式(如 JSON 或 Python 字典),而不是简单的自然语言响应。这种能力使得开发者可以更方便地处理和解析 Agent 返回的结果。 以下是实现 LangChain Agent 结构化输出的一个典型示例: --- #### 示例代码:使用 `structured-output` 工具链 下面是一个基于 LangChain 的简单例子,展示如何让 Agent 输出结构化数据: ```python from langchain.agents import create_pandas_dataframe_agent import pandas as pd from langchain.llms import OpenAI # 创建一个样例 DataFrame data = { 'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35], 'city': ['New York', 'Los Angeles', 'Chicago'] } df = pd.DataFrame(data) # 初始化 Pandas 数据框代理 llm = OpenAI(temperature=0) agent = create_pandas_dataframe_agent(llm, df, verbose=True) # 提问并获得结构化输出 response = agent.run("提供每个人的年龄作为字典列表") print(response) # 输出应类似于 [{'name': 'Alice', 'age': 25}, ...] ``` 在这个例子中,我们创建了一个基于 Pandas Dataframe 的 Agent,并询问它关于某些数据的信息。最终的回答是以结构化的方式呈现出来的——即一个包含每个人及其对应年龄的字典列表。 --- #### 如何自定义结构化输出? 如果需要进一步定制结构化输出的形式,则可以通过调整 Prompt 来控制语言模型的行为。例如,在 Prompt 中明确指定希望得到的数据格式(JSON、XML 等)。 以下是如何修改 Prompt 并强制 Agent 返回 JSON 格式的另一个实例: ```python from langchain.prompts import PromptTemplate from langchain.chains import LLMChain template = """You are an AI assistant that helps with data processing. Given the following context and question, provide your answer in strict JSON format. Context: {context} Question: {question}""" prompt = PromptTemplate(template=template, input_variables=["context", "question"]) llm_chain = LLMChain(prompt=prompt, llm=OpenAI()) result = llm_chain.run({ "context": "A company has three employees named Alice (age 25), Bob (age 30), Charlie (age 35).", "question": "What is their age distribution?" }) print(result) # 应该会打印 {"ages": [{"name": "Alice", "age": 25}, {...}], ...} ``` 在此案例中,Prompt 明确指定了答案需采用严格的 JSON 形式。 --- #### 私有化部署中的应用场景 当考虑将上述功能应用于实际生产环境时,可能还需要关注模型私有化部署的相关技术和流程。这通常涉及以下几个方面[^2]: - 模型优化与压缩。 - 高效的服务端架构设计。 - 安全性和隐私保护措施。 这些因素共同决定了 Agent 是否能够在本地环境中高效运行,同时保持良好的性能表现。 --- ### 总结 通过对 LangChain Agent 的合理配置,能够轻松实现从自由文本到结构化数据的转换过程。无论是借助内置工具还是手动编写 Prompts,都可以灵活满足不同业务需求下的输出样式要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值