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.

test_agent_optimizer.py 3.5 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. import pytest
  2. import os
  3. from conftest import skip_openai as skip
  4. import autogen
  5. from test_assistant_agent import OAI_CONFIG_LIST, KEY_LOC
  6. from autogen import AssistantAgent, UserProxyAgent, config_list_from_json
  7. from autogen.agentchat.contrib.agent_optimizer import AgentOptimizer
  8. here = os.path.abspath(os.path.dirname(__file__))
  9. @pytest.mark.skipif(
  10. skip,
  11. reason="requested to skip",
  12. )
  13. def test_record_conversation():
  14. problem = "Simplify $\\sqrt[3]{1+8} \\cdot \\sqrt[3]{1+\\sqrt[3]{8}}"
  15. config_list = autogen.config_list_from_json(
  16. OAI_CONFIG_LIST,
  17. file_location=KEY_LOC,
  18. )
  19. assistant = AssistantAgent(
  20. "assistant",
  21. system_message="You are a helpful assistant.",
  22. llm_config={
  23. "timeout": 60,
  24. "cache_seed": 42,
  25. "config_list": config_list,
  26. },
  27. )
  28. user_proxy = UserProxyAgent(
  29. name="user_proxy",
  30. human_input_mode="NEVER",
  31. code_execution_config={
  32. "work_dir": f"{here}/test_agent_scripts",
  33. "use_docker": "python:3",
  34. "timeout": 60,
  35. },
  36. max_consecutive_auto_reply=3,
  37. )
  38. user_proxy.initiate_chat(assistant, message=problem)
  39. optimizer = AgentOptimizer(max_actions_per_step=3, config_file_or_env=OAI_CONFIG_LIST)
  40. optimizer.record_one_conversation(assistant.chat_messages_for_summary(user_proxy), is_satisfied=True)
  41. assert len(optimizer._trial_conversations_history) == 1
  42. assert len(optimizer._trial_conversations_performance) == 1
  43. assert optimizer._trial_conversations_performance[0]["Conversation 0"] == 1
  44. optimizer.reset_optimizer()
  45. assert len(optimizer._trial_conversations_history) == 0
  46. assert len(optimizer._trial_conversations_performance) == 0
  47. @pytest.mark.skipif(
  48. skip,
  49. reason="requested to skip",
  50. )
  51. def test_step():
  52. problem = "Simplify $\\sqrt[3]{1+8} \\cdot \\sqrt[3]{1+\\sqrt[3]{8}}"
  53. config_list = autogen.config_list_from_json(
  54. OAI_CONFIG_LIST,
  55. file_location=KEY_LOC,
  56. )
  57. assistant = AssistantAgent(
  58. "assistant",
  59. system_message="You are a helpful assistant.",
  60. llm_config={
  61. "timeout": 60,
  62. "cache_seed": 42,
  63. "config_list": config_list,
  64. },
  65. )
  66. user_proxy = UserProxyAgent(
  67. name="user_proxy",
  68. human_input_mode="NEVER",
  69. code_execution_config={
  70. "work_dir": f"{here}/test_agent_scripts",
  71. "use_docker": "python:3",
  72. "timeout": 60,
  73. },
  74. max_consecutive_auto_reply=3,
  75. )
  76. optimizer = AgentOptimizer(max_actions_per_step=3, config_file_or_env=OAI_CONFIG_LIST)
  77. user_proxy.initiate_chat(assistant, message=problem)
  78. optimizer.record_one_conversation(assistant.chat_messages_for_summary(user_proxy), is_satisfied=True)
  79. register_for_llm, register_for_exector = optimizer.step()
  80. print("-------------------------------------")
  81. print("register_for_llm:")
  82. print(register_for_llm)
  83. print("register_for_exector")
  84. print(register_for_exector)
  85. for item in register_for_llm:
  86. assistant.update_function_signature(**item)
  87. if len(register_for_exector.keys()) > 0:
  88. user_proxy.register_function(function_map=register_for_exector)
  89. print("-------------------------------------")
  90. print("Updated assistant.llm_config:")
  91. print(assistant.llm_config)
  92. print("Updated user_proxy._function_map:")
  93. print(user_proxy._function_map)