from instructor import OpenAISchema from instructor.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", }, }