LangChain-结合智谱AI大模型实现自定义tools应用实例
准备:
1.可供调用的实时查询天气的接口:
百度天气接口:https://lbsyun.baidu.com/faq/api?title=webapi/weather/base(没有可以去注册用户实名认证后即可免费使用)
可以使用接口工具ApiPost调用,验证接口是否正常
2.一个csv文件,文件内容中包含各个省市区的行政编码
需求:
自定义查询天气的工具,可实时查询任意省市区的天气情况
实现:
1.先定义一个查询 省市区的行政编码的方法 select_code,读取csv文件中的数据
def select_code(csv_file, district_name) ->str:"""根据区域或者城市的名字,返回区域编码:param csv_file::param district_name::return:"""district_map = {}with open(csv_file, mode='r', encoding='utf-8') as f:csv_reader = csv.DictReader(f)for line in csv_reader:district_code = line['districtcode'].strip()district = line['district'].strip()if district not in district_map:district_map[district] = district_codereturn district_map.get(district_name, None)
测试一下:
if __name__ == '__main__':print(select_code('weather_district_id.csv', '十堰'))
输出:
2.定义了一个 Pydantic 模型 WeatherInputArgs,用于校验和封装调用天气查询工具所需的输入参数
class WeatherInputArgs(BaseModel):location: str = Field(..., description="用于查询天气的位置信息")
class WeatherInputArgs(BaseModel)
定义一个类 WeatherInputArgs,继承自 BaseModel。
BaseModel 是 Pydantic 提供的基类,用于数据验证和设置管理。
使用它可以确保传入的数据符合指定的类型和格式。
location: str
定义了一个字段 location,其类型为字符串(str)。
表示用户需要查询天气的“位置”。