531 KiB
531 KiB
In [6]:
from dotenv import load_dotenv
from anthropic import Anthropic
#load environment variable
load_dotenv()
#automatically looks for an "ANTHROPIC_API_KEY" environment variable
client = Anthropic()In [5]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
messages=[
{"role": "user", "content": "What flavors are used in Dr. Pepper?"}
]
)
print(response)Message(id='msg_013wVsHLHRjuDM2WgvVJ8RNm', content=[ContentBlock(text='The exact flavor formula for Dr Pepper is a closely guarded trade secret, but here are some of the main flavors that are believed to be used:\n\n- Cherry - This is one of the most prominent flavors in Dr Pepper. The cherry flavor comes from the use of a type of cherry extract.\n\n- Prune - Dr Pepper contains a prune-like flavor which contributes to its unique profile.\n\n- Vanilla - Vanilla is another key component that helps round out the flavor.\n\n- Spices - Various spices like cinnamon, prune, and other aromatics are believed to be part of the blend.\n\n- Citrus - Flavors like orange, lemon, and prune add some citrus notes.\n\nThe exact combination of these and other secret ingredients is what gives Dr Pepper its signature taste that differentiates it from other cola or soda flavors. The complex blend of sweet, spicy, and tart notes is part of what makes Dr Pepper a unique and iconic soft drink flavor.', type='text')], model='claude-3-haiku-20240307', role='assistant', stop_reason='end_turn', stop_sequence=None, type='message', usage=Usage(input_tokens=18, output_tokens=225))
In [7]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
messages=[
{"role": "user", "content": "Translate hello to French. Respond with a single word"}
]
)In [8]:
responseOut [8]:
Message(id='msg_01SuDqJSTJaRpkDmHGrbfxCt', content=[ContentBlock(text='Bonjour.', type='text')], model='claude-3-haiku-20240307', role='assistant', stop_reason='end_turn', stop_sequence=None, type='message', usage=Usage(input_tokens=19, output_tokens=8))
In [9]:
print(response.content[0].text)Bonjour.
In [10]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
messages=[
{"role": "assistant", "content": "Hello there!"}
]
)
print(response.content[0].text)[0;31m---------------------------------------------------------------------------[0m
[0;31mBadRequestError[0m Traceback (most recent call last)
Cell [0;32mIn[10], line 1[0m
[0;32m----> 1[0m response [38;5;241m=[39m [43mclient[49m[38;5;241;43m.[39;49m[43mmessages[49m[38;5;241;43m.[39;49m[43mcreate[49m[43m([49m
[1;32m 2[0m [43m [49m[43mmodel[49m[38;5;241;43m=[39;49m[38;5;124;43m"[39;49m[38;5;124;43mclaude-3-haiku-20240307[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 3[0m [43m [49m[43mmax_tokens[49m[38;5;241;43m=[39;49m[38;5;241;43m1000[39;49m[43m,[49m
[1;32m 4[0m [43m [49m[43mmessages[49m[38;5;241;43m=[39;49m[43m[[49m
[1;32m 5[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mrole[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43massistant[39;49m[38;5;124;43m"[39;49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mcontent[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mTranslate hello to French. Respond with a single word[39;49m[38;5;124;43m"[39;49m[43m}[49m
[1;32m 6[0m [43m [49m[43m][49m
[1;32m 7[0m [43m)[49m
[1;32m 8[0m [38;5;28mprint[39m(response[38;5;241m.[39mcontent[[38;5;241m0[39m][38;5;241m.[39mtext)
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_utils/_utils.py:277[0m, in [0;36mrequired_args.<locals>.inner.<locals>.wrapper[0;34m(*args, **kwargs)[0m
[1;32m 275[0m msg [38;5;241m=[39m [38;5;124mf[39m[38;5;124m"[39m[38;5;124mMissing required argument: [39m[38;5;132;01m{[39;00mquote(missing[[38;5;241m0[39m])[38;5;132;01m}[39;00m[38;5;124m"[39m
[1;32m 276[0m [38;5;28;01mraise[39;00m [38;5;167;01mTypeError[39;00m(msg)
[0;32m--> 277[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/resources/messages.py:681[0m, in [0;36mMessages.create[0;34m(self, max_tokens, messages, model, metadata, stop_sequences, stream, system, temperature, top_k, top_p, extra_headers, extra_query, extra_body, timeout)[0m
[1;32m 650[0m [38;5;129m@required_args[39m([[38;5;124m"[39m[38;5;124mmax_tokens[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmessages[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmodel[39m[38;5;124m"[39m], [[38;5;124m"[39m[38;5;124mmax_tokens[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmessages[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmodel[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mstream[39m[38;5;124m"[39m])
[1;32m 651[0m [38;5;28;01mdef[39;00m [38;5;21mcreate[39m(
[1;32m 652[0m [38;5;28mself[39m,
[0;32m (...)[0m
[1;32m 679[0m timeout: [38;5;28mfloat[39m [38;5;241m|[39m httpx[38;5;241m.[39mTimeout [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m|[39m NotGiven [38;5;241m=[39m [38;5;241m600[39m,
[1;32m 680[0m ) [38;5;241m-[39m[38;5;241m>[39m Message [38;5;241m|[39m Stream[MessageStreamEvent]:
[0;32m--> 681[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_post[49m[43m([49m
[1;32m 682[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43m/v1/messages[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 683[0m [43m [49m[43mbody[49m[38;5;241;43m=[39;49m[43mmaybe_transform[49m[43m([49m
[1;32m 684[0m [43m [49m[43m{[49m
[1;32m 685[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmax_tokens[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmax_tokens[49m[43m,[49m
[1;32m 686[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmessages[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmessages[49m[43m,[49m
[1;32m 687[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmodel[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmodel[49m[43m,[49m
[1;32m 688[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmetadata[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmetadata[49m[43m,[49m
[1;32m 689[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mstop_sequences[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mstop_sequences[49m[43m,[49m
[1;32m 690[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mstream[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mstream[49m[43m,[49m
[1;32m 691[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43msystem[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43msystem[49m[43m,[49m
[1;32m 692[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtemperature[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtemperature[49m[43m,[49m
[1;32m 693[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtop_k[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtop_k[49m[43m,[49m
[1;32m 694[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtop_p[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtop_p[49m[43m,[49m
[1;32m 695[0m [43m [49m[43m}[49m[43m,[49m
[1;32m 696[0m [43m [49m[43mmessage_create_params[49m[38;5;241;43m.[39;49m[43mMessageCreateParams[49m[43m,[49m
[1;32m 697[0m [43m [49m[43m)[49m[43m,[49m
[1;32m 698[0m [43m [49m[43moptions[49m[38;5;241;43m=[39;49m[43mmake_request_options[49m[43m([49m
[1;32m 699[0m [43m [49m[43mextra_headers[49m[38;5;241;43m=[39;49m[43mextra_headers[49m[43m,[49m[43m [49m[43mextra_query[49m[38;5;241;43m=[39;49m[43mextra_query[49m[43m,[49m[43m [49m[43mextra_body[49m[38;5;241;43m=[39;49m[43mextra_body[49m[43m,[49m[43m [49m[43mtimeout[49m[38;5;241;43m=[39;49m[43mtimeout[49m
[1;32m 700[0m [43m [49m[43m)[49m[43m,[49m
[1;32m 701[0m [43m [49m[43mcast_to[49m[38;5;241;43m=[39;49m[43mMessage[49m[43m,[49m
[1;32m 702[0m [43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m [49m[38;5;129;43;01mor[39;49;00m[43m [49m[38;5;28;43;01mFalse[39;49;00m[43m,[49m
[1;32m 703[0m [43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mStream[49m[43m[[49m[43mMessageStreamEvent[49m[43m][49m[43m,[49m
[1;32m 704[0m [43m [49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:1232[0m, in [0;36mSyncAPIClient.post[0;34m(self, path, cast_to, body, options, files, stream, stream_cls)[0m
[1;32m 1218[0m [38;5;28;01mdef[39;00m [38;5;21mpost[39m(
[1;32m 1219[0m [38;5;28mself[39m,
[1;32m 1220[0m path: [38;5;28mstr[39m,
[0;32m (...)[0m
[1;32m 1227[0m stream_cls: [38;5;28mtype[39m[_StreamT] [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m=[39m [38;5;28;01mNone[39;00m,
[1;32m 1228[0m ) [38;5;241m-[39m[38;5;241m>[39m ResponseT [38;5;241m|[39m _StreamT:
[1;32m 1229[0m opts [38;5;241m=[39m FinalRequestOptions[38;5;241m.[39mconstruct(
[1;32m 1230[0m method[38;5;241m=[39m[38;5;124m"[39m[38;5;124mpost[39m[38;5;124m"[39m, url[38;5;241m=[39mpath, json_data[38;5;241m=[39mbody, files[38;5;241m=[39mto_httpx_files(files), [38;5;241m*[39m[38;5;241m*[39moptions
[1;32m 1231[0m )
[0;32m-> 1232[0m [38;5;28;01mreturn[39;00m cast(ResponseT, [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mrequest[49m[43m([49m[43mcast_to[49m[43m,[49m[43m [49m[43mopts[49m[43m,[49m[43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m,[49m[43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mstream_cls[49m[43m)[49m)
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:921[0m, in [0;36mSyncAPIClient.request[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)[0m
[1;32m 912[0m [38;5;28;01mdef[39;00m [38;5;21mrequest[39m(
[1;32m 913[0m [38;5;28mself[39m,
[1;32m 914[0m cast_to: Type[ResponseT],
[0;32m (...)[0m
[1;32m 919[0m stream_cls: [38;5;28mtype[39m[_StreamT] [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m=[39m [38;5;28;01mNone[39;00m,
[1;32m 920[0m ) [38;5;241m-[39m[38;5;241m>[39m ResponseT [38;5;241m|[39m _StreamT:
[0;32m--> 921[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_request[49m[43m([49m
[1;32m 922[0m [43m [49m[43mcast_to[49m[38;5;241;43m=[39;49m[43mcast_to[49m[43m,[49m
[1;32m 923[0m [43m [49m[43moptions[49m[38;5;241;43m=[39;49m[43moptions[49m[43m,[49m
[1;32m 924[0m [43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m,[49m
[1;32m 925[0m [43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mstream_cls[49m[43m,[49m
[1;32m 926[0m [43m [49m[43mremaining_retries[49m[38;5;241;43m=[39;49m[43mremaining_retries[49m[43m,[49m
[1;32m 927[0m [43m [49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:1012[0m, in [0;36mSyncAPIClient._request[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)[0m
[1;32m 1009[0m err[38;5;241m.[39mresponse[38;5;241m.[39mread()
[1;32m 1011[0m log[38;5;241m.[39mdebug([38;5;124m"[39m[38;5;124mRe-raising status error[39m[38;5;124m"[39m)
[0;32m-> 1012[0m [38;5;28;01mraise[39;00m [38;5;28mself[39m[38;5;241m.[39m_make_status_error_from_response(err[38;5;241m.[39mresponse) [38;5;28;01mfrom[39;00m [38;5;28;01mNone[39;00m
[1;32m 1014[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_process_response(
[1;32m 1015[0m cast_to[38;5;241m=[39mcast_to,
[1;32m 1016[0m options[38;5;241m=[39moptions,
[0;32m (...)[0m
[1;32m 1019[0m stream_cls[38;5;241m=[39mstream_cls,
[1;32m 1020[0m )
[0;31mBadRequestError[0m: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'messages: first message must use the "user" role'}}In [12]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=1000,
messages=[
{"role": "user", "content": "Hey there!"},
{"role": "assistant", "content": "Hi there!"},
{"role": "assistant", "content": "How can I help you??"}
]
)
print(response.content[0].text)[0;31m---------------------------------------------------------------------------[0m
[0;31mBadRequestError[0m Traceback (most recent call last)
Cell [0;32mIn[12], line 1[0m
[0;32m----> 1[0m response [38;5;241m=[39m [43mclient[49m[38;5;241;43m.[39;49m[43mmessages[49m[38;5;241;43m.[39;49m[43mcreate[49m[43m([49m
[1;32m 2[0m [43m [49m[43mmodel[49m[38;5;241;43m=[39;49m[38;5;124;43m"[39;49m[38;5;124;43mclaude-3-haiku-20240307[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 3[0m [43m [49m[43mmax_tokens[49m[38;5;241;43m=[39;49m[38;5;241;43m1000[39;49m[43m,[49m
[1;32m 4[0m [43m [49m[43mmessages[49m[38;5;241;43m=[39;49m[43m[[49m
[1;32m 5[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mrole[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43muser[39;49m[38;5;124;43m"[39;49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mcontent[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mHey there![39;49m[38;5;124;43m"[39;49m[43m}[49m[43m,[49m
[1;32m 6[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mrole[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43massistant[39;49m[38;5;124;43m"[39;49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mcontent[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mHi there![39;49m[38;5;124;43m"[39;49m[43m}[49m[43m,[49m
[1;32m 7[0m [43m [49m[43m{[49m[38;5;124;43m"[39;49m[38;5;124;43mrole[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43massistant[39;49m[38;5;124;43m"[39;49m[43m,[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mcontent[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[38;5;124;43m"[39;49m[38;5;124;43mHow can I help you??[39;49m[38;5;124;43m"[39;49m[43m}[49m
[1;32m 8[0m [43m [49m[43m][49m
[1;32m 9[0m [43m)[49m
[1;32m 10[0m [38;5;28mprint[39m(response[38;5;241m.[39mcontent[[38;5;241m0[39m][38;5;241m.[39mtext)
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_utils/_utils.py:277[0m, in [0;36mrequired_args.<locals>.inner.<locals>.wrapper[0;34m(*args, **kwargs)[0m
[1;32m 275[0m msg [38;5;241m=[39m [38;5;124mf[39m[38;5;124m"[39m[38;5;124mMissing required argument: [39m[38;5;132;01m{[39;00mquote(missing[[38;5;241m0[39m])[38;5;132;01m}[39;00m[38;5;124m"[39m
[1;32m 276[0m [38;5;28;01mraise[39;00m [38;5;167;01mTypeError[39;00m(msg)
[0;32m--> 277[0m [38;5;28;01mreturn[39;00m [43mfunc[49m[43m([49m[38;5;241;43m*[39;49m[43margs[49m[43m,[49m[43m [49m[38;5;241;43m*[39;49m[38;5;241;43m*[39;49m[43mkwargs[49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/resources/messages.py:681[0m, in [0;36mMessages.create[0;34m(self, max_tokens, messages, model, metadata, stop_sequences, stream, system, temperature, top_k, top_p, extra_headers, extra_query, extra_body, timeout)[0m
[1;32m 650[0m [38;5;129m@required_args[39m([[38;5;124m"[39m[38;5;124mmax_tokens[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmessages[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmodel[39m[38;5;124m"[39m], [[38;5;124m"[39m[38;5;124mmax_tokens[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmessages[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mmodel[39m[38;5;124m"[39m, [38;5;124m"[39m[38;5;124mstream[39m[38;5;124m"[39m])
[1;32m 651[0m [38;5;28;01mdef[39;00m [38;5;21mcreate[39m(
[1;32m 652[0m [38;5;28mself[39m,
[0;32m (...)[0m
[1;32m 679[0m timeout: [38;5;28mfloat[39m [38;5;241m|[39m httpx[38;5;241m.[39mTimeout [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m|[39m NotGiven [38;5;241m=[39m [38;5;241m600[39m,
[1;32m 680[0m ) [38;5;241m-[39m[38;5;241m>[39m Message [38;5;241m|[39m Stream[MessageStreamEvent]:
[0;32m--> 681[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_post[49m[43m([49m
[1;32m 682[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43m/v1/messages[39;49m[38;5;124;43m"[39;49m[43m,[49m
[1;32m 683[0m [43m [49m[43mbody[49m[38;5;241;43m=[39;49m[43mmaybe_transform[49m[43m([49m
[1;32m 684[0m [43m [49m[43m{[49m
[1;32m 685[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmax_tokens[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmax_tokens[49m[43m,[49m
[1;32m 686[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmessages[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmessages[49m[43m,[49m
[1;32m 687[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmodel[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmodel[49m[43m,[49m
[1;32m 688[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mmetadata[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mmetadata[49m[43m,[49m
[1;32m 689[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mstop_sequences[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mstop_sequences[49m[43m,[49m
[1;32m 690[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mstream[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mstream[49m[43m,[49m
[1;32m 691[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43msystem[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43msystem[49m[43m,[49m
[1;32m 692[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtemperature[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtemperature[49m[43m,[49m
[1;32m 693[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtop_k[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtop_k[49m[43m,[49m
[1;32m 694[0m [43m [49m[38;5;124;43m"[39;49m[38;5;124;43mtop_p[39;49m[38;5;124;43m"[39;49m[43m:[49m[43m [49m[43mtop_p[49m[43m,[49m
[1;32m 695[0m [43m [49m[43m}[49m[43m,[49m
[1;32m 696[0m [43m [49m[43mmessage_create_params[49m[38;5;241;43m.[39;49m[43mMessageCreateParams[49m[43m,[49m
[1;32m 697[0m [43m [49m[43m)[49m[43m,[49m
[1;32m 698[0m [43m [49m[43moptions[49m[38;5;241;43m=[39;49m[43mmake_request_options[49m[43m([49m
[1;32m 699[0m [43m [49m[43mextra_headers[49m[38;5;241;43m=[39;49m[43mextra_headers[49m[43m,[49m[43m [49m[43mextra_query[49m[38;5;241;43m=[39;49m[43mextra_query[49m[43m,[49m[43m [49m[43mextra_body[49m[38;5;241;43m=[39;49m[43mextra_body[49m[43m,[49m[43m [49m[43mtimeout[49m[38;5;241;43m=[39;49m[43mtimeout[49m
[1;32m 700[0m [43m [49m[43m)[49m[43m,[49m
[1;32m 701[0m [43m [49m[43mcast_to[49m[38;5;241;43m=[39;49m[43mMessage[49m[43m,[49m
[1;32m 702[0m [43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m [49m[38;5;129;43;01mor[39;49;00m[43m [49m[38;5;28;43;01mFalse[39;49;00m[43m,[49m
[1;32m 703[0m [43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mStream[49m[43m[[49m[43mMessageStreamEvent[49m[43m][49m[43m,[49m
[1;32m 704[0m [43m [49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:1232[0m, in [0;36mSyncAPIClient.post[0;34m(self, path, cast_to, body, options, files, stream, stream_cls)[0m
[1;32m 1218[0m [38;5;28;01mdef[39;00m [38;5;21mpost[39m(
[1;32m 1219[0m [38;5;28mself[39m,
[1;32m 1220[0m path: [38;5;28mstr[39m,
[0;32m (...)[0m
[1;32m 1227[0m stream_cls: [38;5;28mtype[39m[_StreamT] [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m=[39m [38;5;28;01mNone[39;00m,
[1;32m 1228[0m ) [38;5;241m-[39m[38;5;241m>[39m ResponseT [38;5;241m|[39m _StreamT:
[1;32m 1229[0m opts [38;5;241m=[39m FinalRequestOptions[38;5;241m.[39mconstruct(
[1;32m 1230[0m method[38;5;241m=[39m[38;5;124m"[39m[38;5;124mpost[39m[38;5;124m"[39m, url[38;5;241m=[39mpath, json_data[38;5;241m=[39mbody, files[38;5;241m=[39mto_httpx_files(files), [38;5;241m*[39m[38;5;241m*[39moptions
[1;32m 1231[0m )
[0;32m-> 1232[0m [38;5;28;01mreturn[39;00m cast(ResponseT, [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43mrequest[49m[43m([49m[43mcast_to[49m[43m,[49m[43m [49m[43mopts[49m[43m,[49m[43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m,[49m[43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mstream_cls[49m[43m)[49m)
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:921[0m, in [0;36mSyncAPIClient.request[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)[0m
[1;32m 912[0m [38;5;28;01mdef[39;00m [38;5;21mrequest[39m(
[1;32m 913[0m [38;5;28mself[39m,
[1;32m 914[0m cast_to: Type[ResponseT],
[0;32m (...)[0m
[1;32m 919[0m stream_cls: [38;5;28mtype[39m[_StreamT] [38;5;241m|[39m [38;5;28;01mNone[39;00m [38;5;241m=[39m [38;5;28;01mNone[39;00m,
[1;32m 920[0m ) [38;5;241m-[39m[38;5;241m>[39m ResponseT [38;5;241m|[39m _StreamT:
[0;32m--> 921[0m [38;5;28;01mreturn[39;00m [38;5;28;43mself[39;49m[38;5;241;43m.[39;49m[43m_request[49m[43m([49m
[1;32m 922[0m [43m [49m[43mcast_to[49m[38;5;241;43m=[39;49m[43mcast_to[49m[43m,[49m
[1;32m 923[0m [43m [49m[43moptions[49m[38;5;241;43m=[39;49m[43moptions[49m[43m,[49m
[1;32m 924[0m [43m [49m[43mstream[49m[38;5;241;43m=[39;49m[43mstream[49m[43m,[49m
[1;32m 925[0m [43m [49m[43mstream_cls[49m[38;5;241;43m=[39;49m[43mstream_cls[49m[43m,[49m
[1;32m 926[0m [43m [49m[43mremaining_retries[49m[38;5;241;43m=[39;49m[43mremaining_retries[49m[43m,[49m
[1;32m 927[0m [43m [49m[43m)[49m
File [0;32m/opt/homebrew/Caskroom/miniforge/base/envs/py311/lib/python3.11/site-packages/anthropic/_base_client.py:1012[0m, in [0;36mSyncAPIClient._request[0;34m(self, cast_to, options, remaining_retries, stream, stream_cls)[0m
[1;32m 1009[0m err[38;5;241m.[39mresponse[38;5;241m.[39mread()
[1;32m 1011[0m log[38;5;241m.[39mdebug([38;5;124m"[39m[38;5;124mRe-raising status error[39m[38;5;124m"[39m)
[0;32m-> 1012[0m [38;5;28;01mraise[39;00m [38;5;28mself[39m[38;5;241m.[39m_make_status_error_from_response(err[38;5;241m.[39mresponse) [38;5;28;01mfrom[39;00m [38;5;28;01mNone[39;00m
[1;32m 1014[0m [38;5;28;01mreturn[39;00m [38;5;28mself[39m[38;5;241m.[39m_process_response(
[1;32m 1015[0m cast_to[38;5;241m=[39mcast_to,
[1;32m 1016[0m options[38;5;241m=[39moptions,
[0;32m (...)[0m
[1;32m 1019[0m stream_cls[38;5;241m=[39mstream_cls,
[1;32m 1020[0m )
[0;31mBadRequestError[0m: Error code: 400 - {'type': 'error', 'error': {'type': 'invalid_request_error', 'message': 'messages: roles must alternate between "user" and "assistant", but found multiple "assistant" roles in a row'}}In [10]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=500,
messages=[
{"role": "user", "content": f"Generate a beautiful haiku"},
{"role": "assistant", "content": "calming mountain air"}
]
)
print(response.content[0].text), dancing sunlight on still waters, nature's gentle grace.
In [11]:
print("calming mountain air" + response.content[0].text)calming mountain air, dancing sunlight on still waters, nature's gentle grace.
In [18]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=500,
messages=[
{"role": "user", "content": f"Analyze the sentiment in this tweet: Just tried the new spicy pickles from @PickleCo, and my taste buds are doing a happy dance! 🌶️🥒 #pickleslove #spicyfood"},
]
)
print(response.content[0].text)The sentiment in this tweet is overwhelmingly positive. The user expresses their enjoyment of the new spicy pickles from @PickleCo, using enthusiastic language and emojis to convey their delight. Positive indicators: 1. "My taste buds are doing a happy dance!" - This phrase indicates that the user is extremely pleased with the taste of the pickles, to the point of eliciting a joyful physical response. 2. Emojis - The use of the hot pepper 🌶️ and cucumber 🥒 emojis further emphasizes the user's excitement about the spicy pickles. 3. Hashtags - The inclusion of #pickleslove and #spicyfood hashtags suggests that the user has a strong affinity for pickles and spicy food, and the new product aligns perfectly with their preferences. 4. Exclamation mark - The exclamation mark at the end of the first sentence adds emphasis to the user's positive experience. Overall, the tweet conveys a strong sense of satisfaction, excitement, and enjoyment related to trying the new spicy pickles from @PickleCo.
In [21]:
response = client.messages.create(
model="claude-3-haiku-20240307",
max_tokens=500,
messages=[
{"role": "user", "content": "Unpopular opinion: Pickles are disgusting. Don't @ me"},
{"role": "assistant", "content": "NEGATIVE"},
{"role": "user", "content": "I think my love for pickles might be getting out of hand. I just bought a pickle-shaped pool float"},
{"role": "assistant", "content": "POSITIVE"},
{"role": "user", "content": "Seriously why would anyone ever eat a pickle? Those things are nasty!"},
{"role": "assistant", "content": "NEGATIVE"},
{"role": "user", "content": "Just tried the new spicy pickles from @PickleCo, and my taste buds are doing a happy dance! 🌶️🥒 #pickleslove #spicyfood"},
]
)
print(response.content[0].text)POSITIVE

