mirror of
https://github.com/kennethreitz/instructor.git
synced 2026-06-05 22:50:18 +00:00
nit: update union
This commit is contained in:
+26
-4
@@ -1,7 +1,29 @@
|
||||
!!! warning "This page is a work in progress"
|
||||
Pydantic models also support `Union` types, which are used to represent a value that can be one of several types.
|
||||
|
||||
You can use `Union` types to write *agents* that can dynamically choose actions - by choosing an output class.
|
||||
For example, in a search and lookup function, the LLM can determine whether to execute another search, lookup
|
||||
or other action, or finish the task with an answer.
|
||||
While many libraries support multiple function calls, and tool calls support multiple returns, the goal is to provide only one way to do things.
|
||||
|
||||
## Unions for Multiple Types
|
||||
|
||||
You can use `Union` types to write _agents_ that can dynamically choose actions - by choosing an output class. For example, in a search and lookup function, the LLM can determine whether to execute another search, lookup or other action.
|
||||
|
||||
```python
|
||||
class Search(BaseModel):
|
||||
query: str
|
||||
|
||||
def execute(self):
|
||||
return ...
|
||||
|
||||
class Lookup(BaseModel):
|
||||
key: str
|
||||
|
||||
def execute(self):
|
||||
return ...
|
||||
|
||||
class Action(BaseModel):
|
||||
action: Union[Search, Lookup]
|
||||
|
||||
def execute(self):
|
||||
return self.action.execute()
|
||||
```
|
||||
|
||||
See 'examples/union/run.py' for a working example.
|
||||
|
||||
Reference in New Issue
Block a user