my_simple_agent.py 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. # my_simple_agent.py
  2. from typing import Optional
  3. from hello_agents import SimpleAgent, HelloAgentsLLM, Config, Message
  4. class MySimpleAgent(SimpleAgent):
  5. """
  6. 重写的简单对话Agent
  7. 展示如何基于框架基类构建自定义Agent
  8. """
  9. def __init__(
  10. self,
  11. name: str,
  12. llm: HelloAgentsLLM,
  13. system_prompt: Optional[str] = None,
  14. config: Optional[Config] = None
  15. ):
  16. super().__init__(name, llm, system_prompt, config)
  17. print(f"✅ {name} 初始化完成,基于框架基类构建")
  18. def run(self, input_text: str, **kwargs) -> str:
  19. """
  20. 重写的运行方法 - 实现简单对话逻辑
  21. """
  22. print(f"🤖 {self.name} 正在处理: {input_text}")
  23. # 构建消息列表
  24. messages = []
  25. # 添加系统消息
  26. if self.system_prompt:
  27. messages.append({"role": "system", "content": self.system_prompt})
  28. # 添加历史消息
  29. for msg in self._history:
  30. messages.append({"role": msg.role, "content": msg.content})
  31. # 添加当前用户消息
  32. messages.append({"role": "user", "content": input_text})
  33. # 调用LLM
  34. response = self.llm.invoke(messages, **kwargs)
  35. # 保存到历史记录
  36. self.add_message(Message(input_text, "user"))
  37. self.add_message(Message(response, "assistant"))
  38. print(f"✅ {self.name} 响应完成")
  39. return response
  40. def stream_run(self, input_text: str, **kwargs):
  41. """
  42. 自定义的流式运行方法
  43. """
  44. print(f"🌊 {self.name} 开始流式处理: {input_text}")
  45. messages = []
  46. if self.system_prompt:
  47. messages.append({"role": "system", "content": self.system_prompt})
  48. for msg in self._history:
  49. messages.append({"role": msg.role, "content": msg.content})
  50. messages.append({"role": "user", "content": input_text})
  51. # 流式调用LLM
  52. full_response = ""
  53. print("📝 实时响应: ", end="")
  54. for chunk in self.llm.stream_invoke(messages, **kwargs):
  55. full_response += chunk
  56. print(chunk, end="", flush=True)
  57. yield chunk
  58. print() # 换行
  59. # 保存完整对话到历史记录
  60. self.add_message(Message(input_text, "user"))
  61. self.add_message(Message(full_response, "assistant"))
  62. print(f"✅ {self.name} 流式响应完成")