Spaces:
Sleeping
Sleeping
File size: 1,504 Bytes
30feaee | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | import gradio as gr
import cohere
import os
co = cohere.ClientV2(os.getenv("COHERE_API_KEY"))
def chat(message, history, system_prompt):
messages = []
if system_prompt:
messages.append({"role": "system", "content": system_prompt})
for item in history:
messages.append({"role": item["role"], "content": item["content"]})
messages.append({"role": "user", "content": message})
stream = co.chat_stream(
model="command-a-03-2025",
messages=messages
)
response = ""
for event in stream:
if event.type == "content-delta":
response += event.delta.message.content.text
yield response
with gr.Blocks() as demo:
gr.Markdown("## Chatbot Cohere (Gradio)")
system_prompt = gr.Textbox(
value="Tu es un assistant utile.",
label="Prompt système"
)
chatbot = gr.Chatbot()
msg = gr.Textbox(label="Message")
def user_fn(message, history):
return "", history + [{"role": "user", "content": message}]
def bot_fn(history, system_prompt):
message = history[-1]["content"]
previous = history[:-1]
history = history + [{"role": "assistant", "content": ""}]
for chunk in chat(message, previous, system_prompt):
history[-1]["content"] = chunk
yield history
msg.submit(user_fn, [msg, chatbot], [msg, chatbot], queue=False).then(
bot_fn, [chatbot, system_prompt], chatbot
)
demo.queue()
demo.launch()
|