mirror of
https://github.com/kennethreitz/instructor.git
synced 2026-06-05 22:50:18 +00:00
feat: support anthropic (non-streaming only) (#512)
Co-authored-by: Jason Liu <jason@jxnl.co>
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
---
|
||||
draft: False
|
||||
date: 2024-03-20
|
||||
authors:
|
||||
- jxnl
|
||||
---
|
||||
|
||||
# Announcing Anthropic Support
|
||||
|
||||
A special shoutout to [Shreya](https://twitter.com/shreyaw_) for her contributions to the anthropic support. As of now, all features are operational with the exception of streaming support.
|
||||
|
||||
For those eager to experiment, simply patch the client with `ANTHROPIC_TOOLS`, which will enable you to leverage the `anthropic` client for making requests.
|
||||
|
||||
```
|
||||
pip install instructor[anthropic]
|
||||
```
|
||||
|
||||
```python
|
||||
from pydantic import BaseModel
|
||||
from typing import List
|
||||
import anthropic
|
||||
import instructor
|
||||
|
||||
# Patching the Anthropics client with the instructor for enhanced capabilities
|
||||
anthropic_client = instructor.patch(
|
||||
create=anthropic.Anthropic().messages.create,
|
||||
mode=instructor.Mode.ANTHROPIC_TOOLS
|
||||
)
|
||||
|
||||
class Properties(BaseModel):
|
||||
name: str
|
||||
value: str
|
||||
|
||||
class User(BaseModel):
|
||||
name: str
|
||||
age: int
|
||||
properties: List[Properties]
|
||||
|
||||
user_response = anthropic_client(
|
||||
model="claude-3-haiku-20240307",
|
||||
max_tokens=1024,
|
||||
max_retries=0,
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": "Create a user for a model with a name, age, and properties.",
|
||||
}
|
||||
],
|
||||
response_model=User,
|
||||
) # type: ignore
|
||||
|
||||
print(user_response.model_dump_json(indent=2))
|
||||
"""
|
||||
{
|
||||
"name": "John",
|
||||
"age": 25,
|
||||
"properties": [
|
||||
{
|
||||
"key": "favorite_color",
|
||||
"value": "blue"
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
We're encountering challenges with deeply nested types and eagerly invite the community to test, provide feedback, and suggest necessary improvements as we enhance the anthropic client's support.
|
||||
Reference in New Issue
Block a user