tagny commited on
Commit
ac04ca3
·
verified ·
1 Parent(s): 8837657

Clone a new agent per session to isolate the session conversation from others

Browse files
Files changed (1) hide show
  1. 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.agent = agent
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
- from copy import deepcopy
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