|
3 | 3 | import instructor |
4 | 4 | from dotenv import load_dotenv |
5 | 5 | from openai import AsyncOpenAI |
| 6 | +import anthropic |
| 7 | +from pydantic import BaseModel |
6 | 8 |
|
7 | | -from parea import Parea |
| 9 | +from parea import Parea, trace |
8 | 10 |
|
9 | 11 | load_dotenv() |
10 | 12 |
|
11 | | -client = AsyncOpenAI() |
| 13 | +oai_aclient = AsyncOpenAI() |
| 14 | +ant_client = anthropic.AsyncClient() |
12 | 15 |
|
13 | 16 | p = Parea(api_key=os.getenv("PAREA_API_KEY")) |
14 | | -p.wrap_openai_client(client, "instructor") |
15 | | - |
16 | | -client = instructor.from_openai(client) |
17 | 17 |
|
| 18 | +p.wrap_openai_client(oai_aclient, 'instructor') |
| 19 | +p.wrap_anthropic_client(ant_client) |
18 | 20 |
|
19 | | -from pydantic import BaseModel |
| 21 | +oai_aclient = instructor.from_openai(oai_aclient) |
| 22 | +ant_client = instructor.from_anthropic(ant_client) |
20 | 23 |
|
21 | 24 |
|
22 | 25 | class UserDetail(BaseModel): |
23 | 26 | name: str |
24 | | - age: int |
| 27 | + age: str |
25 | 28 |
|
26 | 29 |
|
27 | | -async def main(): |
28 | | - user = client.completions.create_partial( |
29 | | - model="gpt-3.5-turbo", |
| 30 | +@trace |
| 31 | +async def ainner_main(): |
| 32 | + user = oai_aclient.completions.create_partial( |
| 33 | + model="gpt-4o-mini", |
30 | 34 | max_tokens=1024, |
31 | 35 | max_retries=3, |
32 | 36 | messages=[ |
33 | 37 | { |
34 | 38 | "role": "user", |
35 | | - "content": "Please crea a user", |
| 39 | + "content": "Please create a user", |
36 | 40 | } |
37 | 41 | ], |
38 | 42 | response_model=UserDetail, |
39 | 43 | ) |
40 | | - # print(user) |
41 | | - async for u in user: |
| 44 | + return user |
| 45 | + |
| 46 | + |
| 47 | +async def amain(): |
| 48 | + resp = await ainner_main() |
| 49 | + async for u in resp: |
42 | 50 | print(u) |
43 | 51 |
|
44 | | - # user2 = client.completions.create_partial( |
45 | | - # model="gpt-3.5-turbo", |
46 | | - # max_tokens=1024, |
47 | | - # max_retries=3, |
48 | | - # messages=[ |
49 | | - # { |
50 | | - # "role": "user", |
51 | | - # "content": "Please crea a user", |
52 | | - # } |
53 | | - # ], |
54 | | - # response_model=UserDetail, |
55 | | - # ) |
56 | | - # async for u in user2: |
57 | | - # print(u) |
| 52 | + |
| 53 | +@trace |
| 54 | +def inner_main(): |
| 55 | + user = ant_client.completions.create_partial( |
| 56 | + model="claude-3-5-sonnet-20240620", |
| 57 | + max_tokens=1024, |
| 58 | + max_retries=3, |
| 59 | + messages=[ |
| 60 | + { |
| 61 | + "role": "user", |
| 62 | + "content": "Please create a user", |
| 63 | + } |
| 64 | + ], |
| 65 | + response_model=UserDetail, |
| 66 | + ) |
| 67 | + return user |
| 68 | + |
| 69 | + |
| 70 | +def main(): |
| 71 | + resp = inner_main() |
| 72 | + for u in resp: |
| 73 | + print(u) |
58 | 74 |
|
59 | 75 |
|
60 | 76 | if __name__ == "__main__": |
61 | 77 | import asyncio |
62 | 78 |
|
63 | | - asyncio.run(main()) |
| 79 | + asyncio.run(amain()) |
| 80 | + |
| 81 | + main() |
0 commit comments