Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -8,6 +8,39 @@ from langchain.llms.base import LLM
|
|
| 8 |
from langchain.agents import initialize_agent, AgentType,load_tools
|
| 9 |
from langchain.tools import Tool
|
| 10 |
from langchain_experimental.tools.python.tool import PythonREPLTool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 11 |
#from langchain_community.retrievers import WikipediaRetriever
|
| 12 |
#from langchain.tools.retriever import create_retriever_tool
|
| 13 |
#retriever = WikipediaRetriever(lang="ko",top_k_results=10)
|
|
@@ -137,12 +170,15 @@ tools.extend([
|
|
| 137 |
# ββββββββββββββββββββββββββββββ
|
| 138 |
# β
Agent μ΄κΈ°ν
|
| 139 |
# ββββββββββββββββββββββββββββββ
|
|
|
|
|
|
|
| 140 |
agent = initialize_agent(
|
| 141 |
tools,
|
| 142 |
llm,
|
| 143 |
agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
|
| 144 |
verbose=True,
|
| 145 |
-
handle_parsing_errors=True
|
|
|
|
| 146 |
)
|
| 147 |
|
| 148 |
# ββββββββββββββββββββββββββββββ
|
|
@@ -154,6 +190,11 @@ def chat(message, history):
|
|
| 154 |
except Exception as e:
|
| 155 |
response = f"β οΈ μ€λ₯: {e}"
|
| 156 |
history = history + [(message, response)]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 157 |
return history, history
|
| 158 |
|
| 159 |
with gr.Blocks(theme=gr.themes.Soft(), title="PIXAL Assistant (LangChain + GitHub LLM)") as demo:
|
|
|
|
| 8 |
from langchain.agents import initialize_agent, AgentType,load_tools
|
| 9 |
from langchain.tools import Tool
|
| 10 |
from langchain_experimental.tools.python.tool import PythonREPLTool
|
| 11 |
+
import queue
|
| 12 |
+
from typing import Any, Dict
|
| 13 |
+
import gradio as gr
|
| 14 |
+
from langchain.callbacks.base import BaseCallbackHandler
|
| 15 |
+
|
| 16 |
+
|
| 17 |
+
tools = [add_numbers]
|
| 18 |
+
|
| 19 |
+
# 2. 컀μ€ν
μ½λ°± νΈλ€λ¬
|
| 20 |
+
class StreamingAgentCallbackHandler(BaseCallbackHandler):
|
| 21 |
+
def __init__(self, q: queue.Queue):
|
| 22 |
+
self.q = q
|
| 23 |
+
|
| 24 |
+
def on_agent_action(self, action, **kwargs):
|
| 25 |
+
log = f"π§ Thought: {action.log.strip()}\nπ§ Action: {action.tool}({action.tool_input})"
|
| 26 |
+
self.q.put(log)
|
| 27 |
+
|
| 28 |
+
def on_tool_end(self, output, **kwargs):
|
| 29 |
+
self.q.put(f"π¦ Observation: {output}\n")
|
| 30 |
+
|
| 31 |
+
def on_agent_finish(self, finish, **kwargs):
|
| 32 |
+
self.q.put(f"\nβ
Final Answer: {finish.return_values['output']}")
|
| 33 |
+
|
| 34 |
+
def on_llm_new_token(self, token: str, **kwargs):
|
| 35 |
+
# μ νμ μΌλ‘ ν ν° μ€νΈλ¦¬λ° μΆλ ₯
|
| 36 |
+
pass
|
| 37 |
+
|
| 38 |
+
def on_llm_end(self, response, **kwargs):
|
| 39 |
+
self.q.put("[END]")
|
| 40 |
+
|
| 41 |
+
def on_llm_error(self, error, **kwargs):
|
| 42 |
+
self.q.put(f"[ERROR] {str(error)}")
|
| 43 |
+
|
| 44 |
#from langchain_community.retrievers import WikipediaRetriever
|
| 45 |
#from langchain.tools.retriever import create_retriever_tool
|
| 46 |
#retriever = WikipediaRetriever(lang="ko",top_k_results=10)
|
|
|
|
| 170 |
# ββββββββββββββββββββββββββββββ
|
| 171 |
# β
Agent μ΄κΈ°ν
|
| 172 |
# ββββββββββββββββββββββββββββββ
|
| 173 |
+
q_stream = queue.Queue()
|
| 174 |
+
handler = StreamingAgentCallbackHandler(q_stream)
|
| 175 |
agent = initialize_agent(
|
| 176 |
tools,
|
| 177 |
llm,
|
| 178 |
agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION,
|
| 179 |
verbose=True,
|
| 180 |
+
handle_parsing_errors=True,
|
| 181 |
+
callbacks=[handler]
|
| 182 |
)
|
| 183 |
|
| 184 |
# ββββββββββββββββββββββββββββββ
|
|
|
|
| 190 |
except Exception as e:
|
| 191 |
response = f"β οΈ μ€λ₯: {e}"
|
| 192 |
history = history + [(message, response)]
|
| 193 |
+
while True:
|
| 194 |
+
msg = q_stream.get()
|
| 195 |
+
if msg == "[END]":
|
| 196 |
+
break
|
| 197 |
+
yield msg + "\n"
|
| 198 |
return history, history
|
| 199 |
|
| 200 |
with gr.Blocks(theme=gr.themes.Soft(), title="PIXAL Assistant (LangChain + GitHub LLM)") as demo:
|