基于LangChain构建一个简单的Agent代理

摘要:本文说明如何基于LangChain构建一个简单的Agent代理;使用OpenAi模型和TAVILY搜索。

该Agent代理具备读取历史信息的能力。

在介绍之前首先说明如何在Pycharm中配置代理。这样就可以使用LangSmith来进行追踪和TAVILY来搜索。

Pycharm打开,依次点积File,Settings,Appearance&behavior、System settings、HTTP Proxy,选择Manual proxy configuration,选择HTTP,以我为例,我挂着clash小猫,打开电脑网络设置的代理。

将IP地址、端口、下面的文本框分别粘贴复制到刚才打开的Pycharm中的相应地址,点击check connection,输入谷歌网址进行测试。测试成功即可。

上面介绍完了如何在Pycharm中使用代理,下面进入正题。根据我当前的理解,agent的工作流程是

  • 接收输入:代理接收用户的输入消息,并开始处理。
  • 启动代理链:代理链启动,准备处理输入数据。
  • 调用工具或服务ÿ
### 使用LangChain创建自定义工具Agent #### 准备工作梳理 为了构建能够执行特定任务(如SQL查询)的自定义Agent,需先安装并导入必要的Python库。这通常涉及`langchain`及其依赖项以及其他可能用于数据处理或API调用的相关模块[^1]。 ```bash pip install langchain sqlalchemy pandas ``` 接着,在编写具体逻辑前,应明确定义目标——即希望此Agent完成的任务是什么?对于本案例而言,则是要实现一个能与SQL数据库对话的功能性组件。 #### 定义自定义Tool类 基于上述需求分析,下面展示了一个简单的名为`SqlExecutor`的自定义Tool类的设计: ```python from typing import Dict, Any import pandas as pd from sqlalchemy import create_engine class SqlExecutor: """A tool that executes SQL queries against a database.""" def __init__(self, connection_string: str): self.engine = create_engine(connection_string) def run(self, query: str) -> pd.DataFrame: with self.engine.connect() as conn: result = conn.execute(query) columns = result.keys() rows = result.fetchall() return pd.DataFrame(rows, columns=columns) ``` 这里通过继承实现了基本接口方法`run()`,它接受一条SQL语句作为参数,并返回由Pandas DataFrame表示的结果集。此外还初始化了连接到指定数据库所需的引擎对象。 #### 实例化Tools并将其实例加入列表 一旦完成了对各个独立功能单元(即不同类型的Tool)的设计之后,就可以按照如下方式将其实例化并收集起来形成集合形式供后续操作使用[^2]: ```python sql_executor = SqlExecutor('sqlite:///example.db') tools = [sql_executor] ``` 此处假设已经存在一个SQLite数据库文件位于当前目录下命名为`example.db`;当然也可以替换为其他支持的数据源路径表达式以适应不同的应用场景。 #### 配置Action Schema 为了让代理更好地理解如何利用这些工具所提供的能力去解决问题,可以通过设置action schema的方式让其知道每个动作应该接收什么样的输入格式以及预期产生的输出结构。例如针对前面提到过的`SqlExecutor.run()`函数来说,就应当告知系统该方法期望获取的是字符串类型的SQL命令文本[^3]。 ```json { "type": "object", "properties": { "query": {"type": "string"} }, "required": ["query"] } ``` 最后一步就是将以上准备好的所有要素组合在一起构成完整的Agent解决方案啦!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值