Files
instructor/tests/test_multitask.py
T
Jason Liu b5959bdbc9 Upgrade to pydanticv2 (#63)
* Upgrade to Pydantic 2 #15

* update examples to use pydantic2

---------

Co-authored-by: Mike Harris <mharris717@gmail.com>
2023-07-17 21:00:47 +08:00

77 lines
2.3 KiB
Python

from openai_function_call import OpenAISchema
from openai_function_call.dsl import MultiTask
def test_multi_task():
class Search(OpenAISchema):
"""This is the search docstring"""
id: int
query: str
multitask = MultiTask(Search)
assert multitask.openai_schema == {
"description": "Correct segmentation of `Search` tasks",
"name": "MultiSearch",
"parameters": {
"$defs": {
"Search": {
"properties": {
"id": {"type": "integer"},
"query": {"type": "string"},
},
"required": ["id", "query"],
"description": "This is the search docstring",
"type": "object",
}
},
"properties": {
"tasks": {
"description": "Correctly segmented list of `Search` tasks",
"items": {"$ref": "#/$defs/Search"},
"type": "array",
}
},
"required": ["tasks"],
"type": "object",
},
}
def test_multi_task_with_name_and_desc():
class Search(OpenAISchema):
"""This is the search docstring"""
id: int
query: str
multitask = MultiTask(
subtask_class=Search, name="MyCustomName", description="MyCustomDesc"
)
assert multitask.openai_schema == {
"description": "MyCustomDesc",
"name": "MultiMyCustomName",
"parameters": {
"$defs": {
"Search": {
"properties": {
"id": {"type": "integer"},
"query": {"type": "string"},
},
"required": ["id", "query"],
"description": "This is the search docstring",
"type": "object",
}
},
"properties": {
"tasks": {
"description": "Correctly segmented list of `MyCustomName` tasks",
"items": {"$ref": "#/$defs/Search"},
"type": "array",
}
},
"required": ["tasks"],
"type": "object",
},
}