You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

one_agent_direct.py 2.2 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. """
  2. This example shows how to use direct messaging to implement
  3. a simple chat completion agent.
  4. The agent receives a message from the main function, sends it to the
  5. chat completion model, and returns the response to the main function.
  6. """
  7. import asyncio
  8. import os
  9. import sys
  10. from dataclasses import dataclass
  11. from agnext.application import SingleThreadedAgentRuntime
  12. from agnext.components import RoutedAgent, message_handler
  13. from agnext.components.models import (
  14. ChatCompletionClient,
  15. SystemMessage,
  16. UserMessage,
  17. )
  18. from agnext.core import AgentId
  19. sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
  20. from agnext.core import MessageContext
  21. from common.utils import get_chat_completion_client_from_envs
  22. @dataclass
  23. class Message:
  24. content: str
  25. class ChatCompletionAgent(RoutedAgent):
  26. def __init__(self, description: str, model_client: ChatCompletionClient) -> None:
  27. super().__init__(description)
  28. self._system_messages = [SystemMessage("You are a helpful AI assistant.")]
  29. self._model_client = model_client
  30. @message_handler
  31. async def handle_user_message(self, message: Message, ctx: MessageContext) -> Message:
  32. user_message = UserMessage(content=message.content, source="User")
  33. response = await self._model_client.create(self._system_messages + [user_message])
  34. assert isinstance(response.content, str)
  35. return Message(content=response.content)
  36. async def main() -> None:
  37. runtime = SingleThreadedAgentRuntime()
  38. await runtime.register(
  39. "chat_agent",
  40. lambda: ChatCompletionAgent("Chat agent", get_chat_completion_client_from_envs(model="gpt-4o-mini")),
  41. )
  42. agent = AgentId("chat_agent", "default")
  43. runtime.start()
  44. # Send a message to the agent and get the response.
  45. message = Message(content="Hello, what are some fun things to do in Seattle?")
  46. response = await runtime.send_message(message, agent)
  47. assert isinstance(response, Message)
  48. print(response.content)
  49. await runtime.stop()
  50. if __name__ == "__main__":
  51. import logging
  52. logging.basicConfig(level=logging.WARNING)
  53. logging.getLogger("agnext").setLevel(logging.DEBUG)
  54. asyncio.run(main())