add autogen.initiate_chats (#1638)

* add initiate_chats

* update notebook

* different user

* add notebook

* add link to website

* update notebook title

* remove redundancy

* notebook

* return list

* tag

* update notebook

* update notebook

* return finished tasks

---------

Co-authored-by: Chi Wang <wang.chi@microsoft.com>
This commit is contained in:
Qingyun Wu
2024-02-13 00:23:08 -05:00
committed by GitHub
parent d01063d231
commit fb22f78b08
10 changed files with 1942 additions and 666 deletions

View File

@@ -6,6 +6,7 @@ from conftest import skip_openai
import autogen
from typing import Literal
from typing_extensions import Annotated
from autogen import initiate_chats
def test_chat_messages_for_summary():
@@ -129,14 +130,14 @@ def test_chats_group():
]
)
chat_w_manager = chat_res[manager_2]
chat_w_manager = chat_res[-1]
print(chat_w_manager.chat_history, chat_w_manager.summary, chat_w_manager.cost)
manager_2_res = user.get_chat_results(manager_2)
manager_2_res = user.get_chat_results(-1)
all_res = user.get_chat_results()
print(manager_2_res.summary, manager_2_res.cost)
print(all_res[financial_assistant].human_input)
print(all_res[manager_1].summary)
print(all_res[0].human_input)
print(all_res[1].summary)
@pytest.mark.skipif(skip_openai, reason="requested to skip openai tests")
@@ -217,16 +218,120 @@ def test_chats():
]
)
chat_w_writer = chat_res[writer]
chat_w_writer = chat_res[-1]
print(chat_w_writer.chat_history, chat_w_writer.summary, chat_w_writer.cost)
writer_res = user.get_chat_results(writer)
writer_res = user.get_chat_results(-1)
all_res = user.get_chat_results()
print(writer_res.summary, writer_res.cost)
print(all_res[financial_assistant_1].human_input)
print(all_res[financial_assistant_1].summary)
print(all_res[financial_assistant_1].chat_history)
print(all_res[financial_assistant_2].summary)
print(all_res[0].human_input)
print(all_res[0].summary)
print(all_res[0].chat_history)
print(all_res[1].summary)
# print(blogpost.summary, insights_and_blogpost)
@pytest.mark.skipif(skip_openai, reason="requested to skip openai tests")
def test_chats_general():
config_list = autogen.config_list_from_json(
OAI_CONFIG_LIST,
file_location=KEY_LOC,
)
financial_tasks = [
"""What are the full names of NVDA and TESLA.""",
"""Get their stock price.""",
"""Analyze pros and cons. Keep it short.""",
]
writing_tasks = ["""Develop a short but engaging blog post using any information provided."""]
financial_assistant_1 = AssistantAgent(
name="Financial_assistant_1",
llm_config={"config_list": config_list},
)
financial_assistant_2 = AssistantAgent(
name="Financial_assistant_2",
llm_config={"config_list": config_list},
)
writer = AssistantAgent(
name="Writer",
llm_config={"config_list": config_list},
is_termination_msg=lambda x: x.get("content", "").find("TERMINATE") >= 0,
system_message="""
You are a professional writer, known for
your insightful and engaging articles.
You transform complex concepts into compelling narratives.
Reply "TERMINATE" in the end when everything is done.
""",
)
user = UserProxyAgent(
name="User",
human_input_mode="NEVER",
is_termination_msg=lambda x: x.get("content", "").find("TERMINATE") >= 0,
code_execution_config={
"last_n_messages": 1,
"work_dir": "tasks",
"use_docker": False,
}, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly.
)
user_2 = UserProxyAgent(
name="User",
human_input_mode="NEVER",
is_termination_msg=lambda x: x.get("content", "").find("TERMINATE") >= 0,
max_consecutive_auto_reply=3,
code_execution_config={
"last_n_messages": 1,
"work_dir": "tasks",
"use_docker": False,
}, # Please set use_docker=True if docker is available to run the generated code. Using docker is safer than running the generated code directly.
)
def my_summary_method(recipient, sender):
return recipient.chat_messages[sender][0].get("content", "")
chat_res = initiate_chats(
[
{
"sender": user,
"recipient": financial_assistant_1,
"message": financial_tasks[0],
"silent": False,
"summary_method": my_summary_method,
},
{
"sender": user_2,
"recipient": financial_assistant_2,
"message": financial_tasks[1],
"silent": True,
"summary_method": "reflection_with_llm",
},
{
"sender": user,
"recipient": financial_assistant_1,
"message": financial_tasks[2],
"summary_method": "last_msg",
"clear_history": False,
},
{
"sender": user,
"recipient": writer,
"message": writing_tasks[0],
"carryover": "I want to include a figure or a table of data in the blogpost.",
"summary_method": "last_msg",
},
]
)
chat_w_writer = chat_res[-1]
print(chat_w_writer.chat_history, chat_w_writer.summary, chat_w_writer.cost)
print(chat_res[0].human_input)
print(chat_res[0].summary)
print(chat_res[0].chat_history)
print(chat_res[1].summary)
# print(blogpost.summary, insights_and_blogpost)
@@ -379,7 +484,8 @@ def test_chats_w_func():
if __name__ == "__main__":
test_chats()
# test_chats_exceptions()
# test_chats_group()
# test_chats_w_func()
test_chats_general()
test_chats_exceptions()
test_chats_group()
test_chats_w_func()
# test_chat_messages_for_summary()