Spaces:
Running
Running
import anthropic | |
from typing import Iterable | |
from data_model import ChatMessage, State | |
import mesop as me | |
def call_claude_sonnet(input: str, history: list[ChatMessage]) -> Iterable[str]: | |
state = me.state(State) | |
client = anthropic.Anthropic(api_key=state.claude_api_key) | |
messages = [ | |
{ | |
"role": "assistant" if message.role == "model" else message.role, | |
"content": message.content, | |
} | |
for message in history | |
] + [{"role": "user", "content": input}] | |
with client.messages.stream( | |
max_tokens=1024, | |
messages=messages, | |
model="claude-3-sonnet-20240229", | |
) as stream: | |
for text in stream.text_stream: | |
yield text | |