peterpeter8585 commited on
Commit
3fefcc3
Β·
verified Β·
1 Parent(s): fbfc146

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +42 -1
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: