Spaces:
Paused
Paused
Clone a new agent per session to isolate the session conversation from others
Browse files- Gradio_UI.py +29 -5
Gradio_UI.py
CHANGED
@@ -178,6 +178,33 @@ def stream_to_gradio(
|
|
178 |
yield gr.ChatMessage(role="assistant", content=f"**Final answer:** {str(final_answer)}")
|
179 |
|
180 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
181 |
class GradioUI:
|
182 |
"""A one-line interface to launch your agent in Gradio"""
|
183 |
|
@@ -186,7 +213,7 @@ class GradioUI:
|
|
186 |
raise ModuleNotFoundError(
|
187 |
"Please install 'gradio' extra to use the GradioUI: `pip install 'smolagents[gradio]'`"
|
188 |
)
|
189 |
-
self.
|
190 |
self.file_upload_folder = file_upload_folder
|
191 |
if self.file_upload_folder is not None:
|
192 |
if not os.path.exists(file_upload_folder):
|
@@ -197,8 +224,7 @@ class GradioUI:
|
|
197 |
|
198 |
# Get the agent type from the template agent
|
199 |
if "agent" not in session_state:
|
200 |
-
|
201 |
-
session_state["agent"] = deepcopy(self.agent)
|
202 |
|
203 |
messages.append(gr.ChatMessage(role="user", content=prompt))
|
204 |
yield messages
|
@@ -300,8 +326,6 @@ class GradioUI:
|
|
300 |
[text_input, file_uploads_log],
|
301 |
[stored_messages, text_input],
|
302 |
).then(self.interact_with_agent, [stored_messages, chatbot, session_state], [chatbot])
|
303 |
-
# Initialize instance when page loads
|
304 |
-
demo.load(random.random, inputs=None, outputs=None)
|
305 |
|
306 |
demo.launch(debug=True, share=True, **kwargs)
|
307 |
|
|
|
178 |
yield gr.ChatMessage(role="assistant", content=f"**Final answer:** {str(final_answer)}")
|
179 |
|
180 |
|
181 |
+
class AgentCloner:
|
182 |
+
def __init__(self, agent: CodeAgent) -> None:
|
183 |
+
self.agent = agent
|
184 |
+
self.model_client = agent.model
|
185 |
+
|
186 |
+
def clone():
|
187 |
+
new_model_client = HfApiModel(
|
188 |
+
max_tokens=self.model.max_tokens,
|
189 |
+
temperature=self.model.temperature,
|
190 |
+
model_id=self.model.model_id,
|
191 |
+
custom_role_conversions=self.model.custom_role_conversions,
|
192 |
+
)
|
193 |
+
new_agent = CodeAgent(
|
194 |
+
model=new_model_client,
|
195 |
+
tools=self.agent.tools,
|
196 |
+
max_steps=self.agent.max_steps,
|
197 |
+
verbosity_level=self.agent.verbosity_level,
|
198 |
+
grammar=self.agent.,
|
199 |
+
planning_interval=self.agent.,
|
200 |
+
name=self.agent.,
|
201 |
+
description=self.agent.,
|
202 |
+
prompt_templates=self.agent.prompt_templates
|
203 |
+
)
|
204 |
+
return new_agent
|
205 |
+
|
206 |
+
|
207 |
+
|
208 |
class GradioUI:
|
209 |
"""A one-line interface to launch your agent in Gradio"""
|
210 |
|
|
|
213 |
raise ModuleNotFoundError(
|
214 |
"Please install 'gradio' extra to use the GradioUI: `pip install 'smolagents[gradio]'`"
|
215 |
)
|
216 |
+
self.agent_cloner = AgentCloner(agent, model)
|
217 |
self.file_upload_folder = file_upload_folder
|
218 |
if self.file_upload_folder is not None:
|
219 |
if not os.path.exists(file_upload_folder):
|
|
|
224 |
|
225 |
# Get the agent type from the template agent
|
226 |
if "agent" not in session_state:
|
227 |
+
session_state["agent"] = self.agent_cloner.clone()
|
|
|
228 |
|
229 |
messages.append(gr.ChatMessage(role="user", content=prompt))
|
230 |
yield messages
|
|
|
326 |
[text_input, file_uploads_log],
|
327 |
[stored_messages, text_input],
|
328 |
).then(self.interact_with_agent, [stored_messages, chatbot, session_state], [chatbot])
|
|
|
|
|
329 |
|
330 |
demo.launch(debug=True, share=True, **kwargs)
|
331 |
|