如何将字典列表作为输入传递给 Pydantic Langchain 工具函数:Langchain 架构验证错误

问题描述 投票:0回答:1

您好,我正在尝试创建一个代理工具,它将结构化输入数据作为字典列表接收,并对“价格”键进行求和。

input_data=[{'Junk_Food_name': 'Meat Lovers Pizza', 'price': 800},
 {'Junk_Food_name': 'Chicken Alfredo Pizza', 'price': 800},
 {'Junk_Food_name': 'Cheeseburger Pizza', 'price': 800},
 {'Junk_Food_name': 'Chicken Bacon Ranch Pizza', 'price': 800},
 {'Junk_Food_name': 'Chicken Pesto Pizza', 'price': 800}]

现在我尝试将上述输入传递给我在下面定义的函数,如下

from typing import List, Dict
from pydantic import BaseModel, Field
from langchain.agents import tool


# Define the input schema
class InputData(BaseModel):
    input_data: List[Dict[str, int]] = Field(description="List of input data with 'Junk_Food_name' and 'price' fields")

# Define the tool function
@tool(args_schema=InputData)
def calc_price(input_data:List[Dict[str, int]])-> int:
    """ Calculate the final price of the order placed"""
    sum_total = 0
    for item in input_data:
        sum_total += int(item['price'])
    
    return sum_total

但是当我尝试调用上述函数的输入时,出现以下错误:-

ValidationError: 1 validation error for InputData
input_data
  field required (type=value_error.missing)

有人可以帮忙解决上述错误吗!!

我预计产量为 4000

python openai-api pydantic langchain
1个回答
0
投票

运行:

pip show pydantic

您可能正在使用 pydantic v2。 langchain 仍然使用 langchain v1 BaseModel。所以而不是这个

from pydantic import BaseModel, Field

使用

from pydantic.v1 import BaseModel, Field
© www.soinside.com 2019 - 2024. All rights reserved.