Spaces:
Runtime error
Runtime error
| from typing import Literal, Optional, Type, TypedDict | |
| from langchain_core.pydantic_v1 import BaseModel | |
| from langchain.utils.json_schema import dereference_refs | |
| class FunctionDescription(TypedDict): | |
| """Representation of a callable function to the OpenAI API.""" | |
| name: str | |
| """The name of the function.""" | |
| description: str | |
| """A description of the function.""" | |
| parameters: dict | |
| """The parameters of the function.""" | |
| class ToolDescription(TypedDict): | |
| """Representation of a callable function to the OpenAI API.""" | |
| type: Literal["function"] | |
| function: FunctionDescription | |
| def convert_pydantic_to_openai_function( | |
| model: Type[BaseModel], | |
| *, | |
| name: Optional[str] = None, | |
| description: Optional[str] = None, | |
| ) -> FunctionDescription: | |
| """Converts a Pydantic model to a function description for the OpenAI API.""" | |
| schema = dereference_refs(model.schema()) | |
| schema.pop("definitions", None) | |
| return { | |
| "name": name or schema["title"], | |
| "description": description or schema["description"], | |
| "parameters": schema, | |
| } | |
| def convert_pydantic_to_openai_tool( | |
| model: Type[BaseModel], | |
| *, | |
| name: Optional[str] = None, | |
| description: Optional[str] = None, | |
| ) -> ToolDescription: | |
| """Converts a Pydantic model to a function description for the OpenAI API.""" | |
| function = convert_pydantic_to_openai_function( | |
| model, name=name, description=description | |
| ) | |
| return {"type": "function", "function": function} | |