Spaces:
Runtime error
Runtime error
Commit
·
141ce89
1
Parent(s):
febac0d
add callback
Browse files
app.py
CHANGED
|
@@ -1,4 +1,6 @@
|
|
| 1 |
# from typing import Any, Coroutine
|
|
|
|
|
|
|
| 2 |
import openai
|
| 3 |
import os
|
| 4 |
# from langchain.vectorstores import Chroma
|
|
@@ -40,7 +42,7 @@ import gradio as gr
|
|
| 40 |
import time
|
| 41 |
|
| 42 |
import glob
|
| 43 |
-
from typing import Any, List, Mapping, Optional
|
| 44 |
from multiprocessing import Pool
|
| 45 |
from tqdm import tqdm
|
| 46 |
from pygame import mixer
|
|
@@ -94,6 +96,59 @@ from interpreter.code_interpreter import CodeInterpreter
|
|
| 94 |
|
| 95 |
import regex
|
| 96 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 97 |
global CurrentAgent
|
| 98 |
CurrentAgent = os.environ["agent_type"]
|
| 99 |
|
|
@@ -1549,13 +1604,94 @@ def chathmi4(message, history2):
|
|
| 1549 |
# yield ["", history2, "SUBMIT", "STOP"]
|
| 1550 |
try:
|
| 1551 |
if agent is not None:
|
|
|
|
| 1552 |
response = agent.run(message)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1553 |
elif agent is None:
|
| 1554 |
response = asyncio.run(start_playwright(message))
|
| 1555 |
|
| 1556 |
time.sleep(0.1)
|
| 1557 |
history2 = history2 + [(None, response)]
|
| 1558 |
yield ["", history2, gr.update(visible = True), gr.update(visible = False)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1559 |
# yield ["", history2, None, None]
|
| 1560 |
print ("response of chatbot:", response)
|
| 1561 |
# real_content = response[-1:]
|
|
@@ -1597,6 +1733,7 @@ def chathmi4(message, history2):
|
|
| 1597 |
print("-" * 20)
|
| 1598 |
print("-" * 20)
|
| 1599 |
|
|
|
|
| 1600 |
def chatremote(message, history2):
|
| 1601 |
global last_request
|
| 1602 |
global Filename_Chatbot
|
|
@@ -1987,7 +2124,8 @@ with gr.Blocks() as demo:
|
|
| 1987 |
# then(HMI_Wait, None, [submit_button, stop_button])
|
| 1988 |
# inf4 = inputtext.submit(chathmi4, [inputtext, chatbot], [inputtext, chatbot, submit_button, stop_button])
|
| 1989 |
''' open ai | new'''
|
| 1990 |
-
|
|
|
|
| 1991 |
success(playsound1, None, voice_output, queue=True)#.\
|
| 1992 |
# success(ClearAudio, None, voice_output)
|
| 1993 |
|
|
|
|
| 1 |
# from typing import Any, Coroutine
|
| 2 |
+
from uuid import UUID
|
| 3 |
+
from langchain.schema.agent import AgentAction, AgentFinish
|
| 4 |
import openai
|
| 5 |
import os
|
| 6 |
# from langchain.vectorstores import Chroma
|
|
|
|
| 42 |
import time
|
| 43 |
|
| 44 |
import glob
|
| 45 |
+
from typing import Any, Dict, List, Mapping, Optional
|
| 46 |
from multiprocessing import Pool
|
| 47 |
from tqdm import tqdm
|
| 48 |
from pygame import mixer
|
|
|
|
| 96 |
|
| 97 |
import regex
|
| 98 |
|
| 99 |
+
from langchain.callbacks.base import BaseCallbackHandler
|
| 100 |
+
from collections.abc import Generator
|
| 101 |
+
from queue import Queue, Empty
|
| 102 |
+
from threading import Thread
|
| 103 |
+
|
| 104 |
+
|
| 105 |
+
class QueueCallback(BaseCallbackHandler):
|
| 106 |
+
"""Callback handler for streaming LLM responses to a queue."""
|
| 107 |
+
|
| 108 |
+
def __init__(self, q):
|
| 109 |
+
self.q = q
|
| 110 |
+
|
| 111 |
+
def on_llm_new_token(self, token: str, **kwargs: any) -> None:
|
| 112 |
+
self.q.put(token)
|
| 113 |
+
|
| 114 |
+
def on_agent_finish(self, finish: AgentFinish, *, run_id: UUID, parent_run_id: UUID | None = None, **kwargs: Any) -> Any:
|
| 115 |
+
self.q.put(super().on_agent_finish(finish, run_id=run_id, parent_run_id=parent_run_id, **kwargs))
|
| 116 |
+
|
| 117 |
+
def on_agent_action(self, action: AgentAction, *, run_id: UUID, parent_run_id: UUID | None = None, **kwargs: Any) -> Any:
|
| 118 |
+
self.q.put(super().on_agent_action(action, run_id=run_id, parent_run_id=parent_run_id, **kwargs))
|
| 119 |
+
|
| 120 |
+
def on_llm_end(self, *args, **kwargs: any) -> None:
|
| 121 |
+
return self.q.empty()
|
| 122 |
+
|
| 123 |
+
def stream(input_text) -> Generator:
|
| 124 |
+
# Create a Queue
|
| 125 |
+
q = Queue()
|
| 126 |
+
job_done = object()
|
| 127 |
+
|
| 128 |
+
# Create a funciton to call - this will run in a thread
|
| 129 |
+
|
| 130 |
+
def task():
|
| 131 |
+
resp = agent.run(input_text, callbacks=QueueCallback(q))
|
| 132 |
+
q.put(job_done)
|
| 133 |
+
|
| 134 |
+
# Create a thread and start the function
|
| 135 |
+
t = Thread(target=task)
|
| 136 |
+
t.start()
|
| 137 |
+
|
| 138 |
+
content = ""
|
| 139 |
+
|
| 140 |
+
# Get each new token from the queue and yield for our generator
|
| 141 |
+
while True:
|
| 142 |
+
try:
|
| 143 |
+
next_token = q.get(True, timeout=1)
|
| 144 |
+
if next_token is job_done:
|
| 145 |
+
break
|
| 146 |
+
content += next_token
|
| 147 |
+
yield next_token, content
|
| 148 |
+
except Empty:
|
| 149 |
+
continue
|
| 150 |
+
|
| 151 |
+
|
| 152 |
global CurrentAgent
|
| 153 |
CurrentAgent = os.environ["agent_type"]
|
| 154 |
|
|
|
|
| 1604 |
# yield ["", history2, "SUBMIT", "STOP"]
|
| 1605 |
try:
|
| 1606 |
if agent is not None:
|
| 1607 |
+
|
| 1608 |
response = agent.run(message)
|
| 1609 |
+
# test callback
|
| 1610 |
+
|
| 1611 |
+
# temp = []
|
| 1612 |
+
# for next_token, content in stream(message):
|
| 1613 |
+
# temp = temp + content
|
| 1614 |
+
# history_int = history2 + [(None, temp)]
|
| 1615 |
+
# yield(None, history_int, None, None)
|
| 1616 |
elif agent is None:
|
| 1617 |
response = asyncio.run(start_playwright(message))
|
| 1618 |
|
| 1619 |
time.sleep(0.1)
|
| 1620 |
history2 = history2 + [(None, response)]
|
| 1621 |
yield ["", history2, gr.update(visible = True), gr.update(visible = False)]
|
| 1622 |
+
|
| 1623 |
+
|
| 1624 |
+
# yield ["", history2, None, None]
|
| 1625 |
+
print ("response of chatbot:", response)
|
| 1626 |
+
# real_content = response[-1:]
|
| 1627 |
+
# print("real_content", real_content)
|
| 1628 |
+
# try:
|
| 1629 |
+
# # temp = response.split("(sandbox:/")[1] # (sandbox:/sample-20230805-0807.wav)
|
| 1630 |
+
# file_name = CheckFileinResp(response)
|
| 1631 |
+
# print("file_name:", file_name)
|
| 1632 |
+
# if file_name != "N/A":
|
| 1633 |
+
# history2 = history2 + [(None, (file_name,))]
|
| 1634 |
+
# Filename_Chatbot = file_name
|
| 1635 |
+
# yield ["", history2, "SUBMIT", "STOP"]
|
| 1636 |
+
# except Exception as e:
|
| 1637 |
+
# print("No need to add file in chatbot:", e)
|
| 1638 |
+
|
| 1639 |
+
try:
|
| 1640 |
+
# temp = response.split("(sandbox:/")[1] # (sandbox:/sample-20230805-0807.wav)
|
| 1641 |
+
file_names = CheckFileinResp(response)
|
| 1642 |
+
print("file_name:", file_names)
|
| 1643 |
+
if file_names != []:
|
| 1644 |
+
for file_name in file_names:
|
| 1645 |
+
if file_name != "":
|
| 1646 |
+
history2 = history2 + [(None, (file_name, file_name))]
|
| 1647 |
+
Filename_Chatbot = file_name
|
| 1648 |
+
yield ["", history2, "SUBMIT", "STOP"]
|
| 1649 |
+
else:
|
| 1650 |
+
print("No File Found in Response")
|
| 1651 |
+
except Exception as e:
|
| 1652 |
+
print("No need to add file in chatbot:", e)
|
| 1653 |
+
|
| 1654 |
+
|
| 1655 |
+
|
| 1656 |
+
except Exception as e:
|
| 1657 |
+
print("chathmi4 error:", e)
|
| 1658 |
+
|
| 1659 |
+
# history = history + [(message, None)]
|
| 1660 |
+
|
| 1661 |
+
print("History2: ", history2)
|
| 1662 |
+
print("-" * 20)
|
| 1663 |
+
print("-" * 20)
|
| 1664 |
+
|
| 1665 |
+
def chathmi5(message, history2):
|
| 1666 |
+
global last_request
|
| 1667 |
+
global Filename_Chatbot
|
| 1668 |
+
global agent
|
| 1669 |
+
# global ChatbotHistory
|
| 1670 |
+
print("Input Message:", message)
|
| 1671 |
+
|
| 1672 |
+
last_request = message
|
| 1673 |
+
history2 = history2 + [(message, None)]
|
| 1674 |
+
yield ["", history2, gr.update(visible = False), gr.update(visible = True)]
|
| 1675 |
+
# yield ["", history2, "SUBMIT", "STOP"]
|
| 1676 |
+
try:
|
| 1677 |
+
if agent is not None:
|
| 1678 |
+
|
| 1679 |
+
# response = agent.run(message)
|
| 1680 |
+
# test callback
|
| 1681 |
+
|
| 1682 |
+
temp = []
|
| 1683 |
+
for next_token, content in stream(message):
|
| 1684 |
+
temp = temp + content
|
| 1685 |
+
history_int = history2 + [(None, temp)]
|
| 1686 |
+
yield(None, history_int, None, None)
|
| 1687 |
+
elif agent is None:
|
| 1688 |
+
response = asyncio.run(start_playwright(message))
|
| 1689 |
+
|
| 1690 |
+
time.sleep(0.1)
|
| 1691 |
+
history2 = history_int
|
| 1692 |
+
yield ["", history2, gr.update(visible = True), gr.update(visible = False)]
|
| 1693 |
+
|
| 1694 |
+
|
| 1695 |
# yield ["", history2, None, None]
|
| 1696 |
print ("response of chatbot:", response)
|
| 1697 |
# real_content = response[-1:]
|
|
|
|
| 1733 |
print("-" * 20)
|
| 1734 |
print("-" * 20)
|
| 1735 |
|
| 1736 |
+
|
| 1737 |
def chatremote(message, history2):
|
| 1738 |
global last_request
|
| 1739 |
global Filename_Chatbot
|
|
|
|
| 2124 |
# then(HMI_Wait, None, [submit_button, stop_button])
|
| 2125 |
# inf4 = inputtext.submit(chathmi4, [inputtext, chatbot], [inputtext, chatbot, submit_button, stop_button])
|
| 2126 |
''' open ai | new'''
|
| 2127 |
+
# chathmi4 = normal, chathmi5 = callback
|
| 2128 |
+
inf4 = inputtext.submit(chathmi5, [inputtext, chatbot], [inputtext, chatbot, submit_button, stop_button]).\
|
| 2129 |
success(playsound1, None, voice_output, queue=True)#.\
|
| 2130 |
# success(ClearAudio, None, voice_output)
|
| 2131 |
|