Spaces:
Running
Running
Commit
·
29d30f2
1
Parent(s):
b2e5de5
add code
Browse files
app.py
CHANGED
@@ -17,6 +17,24 @@ from dotenv import load_dotenv
|
|
17 |
|
18 |
load_dotenv()
|
19 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
@dataclass
|
21 |
class Deps:
|
22 |
client: AsyncClient
|
@@ -134,10 +152,16 @@ deps = Deps(
|
|
134 |
)
|
135 |
|
136 |
|
137 |
-
async def stream_from_agent(
|
138 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
139 |
chatbot.append({'role': 'user', 'content': prompt})
|
140 |
-
yield
|
141 |
async with weather_agent.run_stream(prompt, deps=deps, message_history=past_messages) as result:
|
142 |
for message in result.new_messages():
|
143 |
past_messages.append(message)
|
@@ -153,14 +177,14 @@ async def stream_from_agent(prompt: str, chatbot: list[dict], past_messages: lis
|
|
153 |
for gr_message in chatbot:
|
154 |
if gr_message.get('metadata', {}).get('id', "") == message.tool_id:
|
155 |
gr_message['content'] = f"Output: {json.dumps(message.content)}"
|
156 |
-
yield
|
157 |
chatbot.append({'role': 'assistant', 'content': ""})
|
158 |
async for message in result.stream_text():
|
159 |
chatbot[-1]["content"] = message
|
160 |
-
yield
|
161 |
data = await result.get_data()
|
162 |
past_messages.append(ModelTextResponse(content=data))
|
163 |
-
yield
|
164 |
|
165 |
|
166 |
with gr.Blocks() as demo:
|
@@ -183,9 +207,13 @@ with gr.Blocks() as demo:
|
|
183 |
past_messages = gr.State([])
|
184 |
chatbot = gr.Chatbot(label="Packing Assistant", type="messages",
|
185 |
avatar_images=(None, "https://ai.pydantic.dev/img/logo-white.svg"))
|
186 |
-
|
187 |
-
|
188 |
-
|
|
|
|
|
|
|
|
|
189 |
|
190 |
|
191 |
|
|
|
17 |
|
18 |
load_dotenv()
|
19 |
|
20 |
+
import logging
|
21 |
+
|
22 |
+
# Configure the root logger to WARNING to suppress debug messages from other libraries
|
23 |
+
logging.basicConfig(level=logging.WARNING)
|
24 |
+
|
25 |
+
# Create a console handler
|
26 |
+
console_handler = logging.StreamHandler()
|
27 |
+
console_handler.setLevel(logging.DEBUG)
|
28 |
+
|
29 |
+
# Create a formatter
|
30 |
+
formatter = logging.Formatter("%(name)s - %(levelname)s - %(message)s")
|
31 |
+
console_handler.setFormatter(formatter)
|
32 |
+
|
33 |
+
# Configure the logger for your specific library
|
34 |
+
logger = logging.getLogger("gradio_webrtc")
|
35 |
+
logger.setLevel(logging.DEBUG)
|
36 |
+
logger.addHandler(console_handler)
|
37 |
+
|
38 |
@dataclass
|
39 |
class Deps:
|
40 |
client: AsyncClient
|
|
|
152 |
)
|
153 |
|
154 |
|
155 |
+
async def stream_from_agent(audio: tuple[int, np.ndarray], chatbot: list[dict], past_messages: list):
|
156 |
+
|
157 |
+
prompt = groq_client.audio.transcriptions.create(
|
158 |
+
file=("audio-file.mp3", audio_to_bytes(audio)),
|
159 |
+
model="whisper-large-v3-turbo",
|
160 |
+
response_format="verbose_json",
|
161 |
+
).text
|
162 |
+
|
163 |
chatbot.append({'role': 'user', 'content': prompt})
|
164 |
+
yield AdditionalOutputs(chatbot, gr.skip())
|
165 |
async with weather_agent.run_stream(prompt, deps=deps, message_history=past_messages) as result:
|
166 |
for message in result.new_messages():
|
167 |
past_messages.append(message)
|
|
|
177 |
for gr_message in chatbot:
|
178 |
if gr_message.get('metadata', {}).get('id', "") == message.tool_id:
|
179 |
gr_message['content'] = f"Output: {json.dumps(message.content)}"
|
180 |
+
yield AdditionalOutputs(chatbot, gr.skip())
|
181 |
chatbot.append({'role': 'assistant', 'content': ""})
|
182 |
async for message in result.stream_text():
|
183 |
chatbot[-1]["content"] = message
|
184 |
+
yield AdditionalOutputs(chatbot, gr.skip())
|
185 |
data = await result.get_data()
|
186 |
past_messages.append(ModelTextResponse(content=data))
|
187 |
+
yield AdditionalOutputs(gr.skip(), past_messages)
|
188 |
|
189 |
|
190 |
with gr.Blocks() as demo:
|
|
|
207 |
past_messages = gr.State([])
|
208 |
chatbot = gr.Chatbot(label="Packing Assistant", type="messages",
|
209 |
avatar_images=(None, "https://ai.pydantic.dev/img/logo-white.svg"))
|
210 |
+
audio= WebRTC(label="Talk with the Agent",
|
211 |
+
modality="audio",
|
212 |
+
mode="send")
|
213 |
+
audio.stream(ReplyOnPause(stream_from_agent), inputs=[audio, chatbot, past_messages],
|
214 |
+
outputs=[audio])
|
215 |
+
audio.on_additional_outputs(lambda c,s: (c, s), outputs=[chatbot, past_messages],
|
216 |
+
queue=False, show_progress="hidden")
|
217 |
|
218 |
|
219 |
|