Autogen의 중첩 채팅 :보다 반응적이고 역동적 인 AI 프록시 상호 작용 구축
인공 지능 (AI)의 발전으로 챗봇이 빠르게 발전 할 수있었습니다. 오늘날 AI 에이전트의 출현으로 챗봇은 전통적인 대화의 한계를 훨씬 뛰어 넘는보다 복잡하고 계층적인 상호 작용을 처리 할 수 있습니다. 이전 기사에서 Autogen을 사용하여 다중 에이전트 챗봇을 구축하면 Autogen을 사용하여 순차적 채팅의 개념을 탐색하여 여러 에이전트 간의 구조화되고 회전하는 커뮤니케이션이 가능합니다. 이제이를 바탕으로 더 복잡한 기능인 중첩 채팅으로 이동합니다. Autogen의 강력한 프레임 워크를 통해 중첩 된 대화를 통해 로봇은 고정 된 순서를 따르지 않고 원활한 의사 소통을 유지할 수 있습니다. 그들은 단일 대화 흐름에서 다른 도구를 탐구하고 인터럽트를 처리하며 원활하게 회복 할 수 있습니다. 이 기사에서는 Autogen에서 중첩 채팅을 구현하고 반응적이고 동적 인 프록시 상호 작용을 만드는 데 관련성을 강조합니다.
먼저 중첩 채팅이 무엇인지 이해합시다.
순환 대화에 반복적으로 참여하기 위해 두 개의 프록시 대화가 필요한 3 자 프록시 채팅을 고려하십시오. 이 두 에이전트 간의 채팅은 중첩 채팅에 추가 할 수 있습니다. 이 별도의 대화를 마친 후, 에이전트는 맥락을 주요 대화로 되돌릴 수 있습니다.
다음 그림은 중첩 채팅의 전환 과정을 보여줍니다.
들어오는 메시지가 조건을 트리거하면 메시지가 중첩 된 채팅으로 들어갑니다. 중첩 채팅은 듀얼 프록시 채팅, 순차적 채팅 또는 기타 채팅 일 수 있습니다. 그런 다음 중첩 채팅의 채팅 결과가 주요 대화로 다시 전송됩니다.
이 기사에서는 중첩 채팅을 사용하여 기사 작성 시스템을 작성합니다. 이를 위해 우리는 기사 개요를 작성하기위한 세 가지 요원,이 개요에서 기사를 작성하고 기사를 검토하기위한 세 가지 요원을 만듭니다. 우리는 작가와 리뷰어가 서로 여러 번 대화하기를 원 하므로이 두 요원을 중첩 된 채팅에 넣었습니다.
또한 프로파일 프록시에 네트워크 쿼리 도구에 액세스 할 수있는 권한을 제공합니다.
이제 코드 로이 작업을하겠습니다.
Autogen 프록시를 만들기 전에 필요한 LLM에 필요한 API 키가 있는지 확인하십시오. 이 연습에서는 Tavily를 사용하여 네트워크를 검색 할 것입니다.
필요한 API 키로 .env 파일을로드하십시오. 여기서 OpenAI 및 Tavily API Key ()를 사용합니다.
<code>from dotenv import load_dotenv load_dotenv('/home/santhosh/Projects/courses/Pinnacle/.env')</code>
config_list로 사용할 llm을 정의하십시오
<code>config_list = { "config_list": [{"model": "gpt-4o-mini", "temperature": 0.2}] }</code>
필요한 키 스토어
Autogen-AgentChat-0.2.37
Tavily-Python-0.5.0
이제 구현을 시작합시다.
user_proxy 프록시를 정의하면 도구를 실행합니다. 그런 다음 LLM을 사용하여 개요를 정의하여 기사 개요를 생성하십시오.
<code>from autogen import ConversableAgent user_proxy = ConversableAgent( name="User", llm_config=False, is_termination_msg=lambda msg: msg.get("content") is not None and "TERMINATE" in msg["content"], human_input_mode="TERMINATE") outline = ConversableAgent( name="Article_outline", system_message="""您是一位经验丰富的內容策略師,負責為指定主題的文章創建詳細的提綱。您的目標是將文章組織成邏輯部分,以便清晰有效地傳達主要思想。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, )</code>
Web_Search 함수를 정의하여 네트워크를 쿼리하십시오.
<code>def web_search(query: str) -> str: tavily_client = TavilyClient() response = tavily_client.search(query, max_results=3, days=10, include_raw_content=True) return response['results']</code>
executor user_proxy를 사용하여 web_search 함수를 개요 프록시에 등록하십시오.
우리는 집행자를 user_proxy로 설정하여 작가의 대리인에게 전송 된 개요를 검토 할 수 있도록 설정했습니다.
<code>register_function( web_search, caller=outline, # 助手代理可以建议调用。 executor=user_proxy, # 用户代理可以执行调用。 name="web_search", # 默认情况下,函数名称用作工具名称。 description="搜索互联网以获取给定查询的结果", # 工具的描述。 )</code>
한 에이전트를 정의하여 기사 내용을 생성하고 다른 하나는 기사를 검토하고 개선을위한 제안을 제공합니다.
<code>writer = ConversableAgent( name="Article_Writer", system_message="""您是一位熟练的作家,负责根据给定的提纲创作一篇全面、引人入胜的文章。您的目标是遵循提纲中提供的结构,用经过充分研究、清晰且内容翔实的內容扩展每个部分。保持文章长度约为500字。如有需要,請使用web_search工具。任務完成後返回“TERMINATE”。""", llm_config=config_list, silent=False, ) reviewer = ConversableAgent( name="Article_Reviewer", system_message="""您是一位熟练的技术文章审阅者。审阅给定的文章,并提供建议以使文章更具吸引力和趣味性。""", llm_config=config_list, silent=False, )</code>
이제 두 에이전트 모두에 대한 중첩 채팅을 등록 할 수 있습니다.
<code>writer.register_nested_chats( trigger=user_proxy, chat_queue=[ { "sender": reviewer, "recipient": writer, "summary_method": "last_msg", "max_turns": 2, } ], )</code>
위의 코드에서는 user_proxy가 작가 프록시에 메시지를 보낼 때 중첩 채팅이 트리거됩니다. 그런 다음 작가 요원은 기사를 작성하고 검토 자 에이전트는 Max_Turns (이 경우 두 번)를 기반으로 기사를 여러 번 검토합니다. 마지막으로, 중첩 채팅의 결과는 사용자 에이전트로 다시 전송됩니다.
이제 모든 것이 설정되었으므로 채팅을 시작합시다
<code>chat_results = user_proxy.initiate_chats( [{"recipient": outline, "message": "撰写一篇关于微软发布的Magentic-One代理系统的文章。", "summary_method": "last_msg", }, {"recipient": writer, "message": "这是文章提纲", "summary_method": "last_msg", }])</code>
여기에서 우리는 Magentic-One 에이전트 시스템에 대한 기사를 쓸 것입니다. 먼저, user_proxy 프록시는 개요 프록시와 채팅을 시작한 다음 작가 프록시와 채팅을 시작합니다.
이제 위 코드의 출력은 다음과 같습니다.
우리가 볼 수 있듯이, user_proxy는 먼저 기사의 주제를 설명하는 개요 프록시에 메시지를 보냅니다. 이렇게하면 도구 호출이 트리거되고 user_proxy는 도구를 실행합니다. 이러한 결과를 기반으로, 개요 에이전트는 개요를 생성하여 작가 에이전트로 보냅니다. 그 후, 작가 에이전트와 검토 자 에이전트 사이의 중첩 채팅은 위에서 논의한대로 계속됩니다.
이제 최종 결과, 즉 Magic-One에 관한 기사를 인쇄합시다.
<code>print(chat_results[1].chat_history[-2]['content'])</code>
Autogen의 중첩 채팅은 단일 대화 프로세스에서 복잡한 멀티 태스킹 상호 작용을 가능하게하여 챗봇의 기능을 향상시킵니다. 중첩 채팅을 통해 봇은 별도의 전용 채팅을 시작하고 출력을 원활하게 통합 할 수 있습니다. 이 기능은 전자 상거래에서 건강 관리에 이르기까지 다양한 응용 프로그램에 대한 동적 인 대상 응답을 지원합니다. 중첩 채팅을 통해 Autogen은보다 반응이 좋고 컨텍스트 인식 AI 시스템을위한 길을 열어줍니다. 이를 통해 개발자는 다양한 사용자 요구를 효과적으로 충족시킬 수있는 복잡한 챗봇을 구축 할 수 있습니다.
AI 에이전트에 대해 자세히 알아 보려면 독점 에이전트 AI Pioneer 프로그램을 확인하십시오!
Q1. Autogen의 중첩 된 채팅은 무엇입니까? A. Autogen의 중첩 채팅을 통해 챗봇은 채팅 프로세스에서 여러 하위 변환을 관리 할 수 있으며, 종종 특정 정보를 검색하는 다른 에이전트 나 도구가 포함됩니다. 구조화 된 회전 접근 방식을 따르는 순차적 채팅과 달리 중첩 채팅을 통해 봇은 인터럽트 및 병렬 작업을 처리하고 출력을 주요 대화에 다시 통합 할 수 있습니다.
Q2. Nest Chat은 응용 프로그램에서 고객 지원을 어떻게 향상 시킵니까? A. 중첩 채팅은 봇이 작업을 전문 에이전트에게 위임 할 수 있도록하여 고객 지원을 향상시킵니다. 예를 들어, 전자 상거래에서 챗봇은 별도의 에이전트를 참조하여 주문 상태 또는 제품 정보를 확인한 다음 정보를 사용자에게 원활하게 전달하여 더 빠르고 정확한 응답을 보장 할 수 있습니다.
Q3. 다른 산업에서 중첩 채팅의 사용 사례는 무엇입니까? A. 중첩 채팅은 다른 산업에 적용될 수 있습니다. 은행 업계에서는 계정 및 대출 조사에 대한 전문적인 지원을 제공합니다. 이러한 유연성은 멀티 태스킹 및 자세한 정보 처리가 필요한 모든 영역에 중첩 채팅을 적합하게 만듭니다.
Q4. Autogen에서 중첩 채팅을 구현하기 위해 특정 설정이 필요합니까? A. 예, Autogen에서 중첩 채팅을 구현하려면 언어 모델 또는 Tavily와 같은 웹 검색 도구와 같은 특정 API 키를 사용하여 프록시 구성이 필요합니다. 또한 각 에이전트는 중첩 된 대화를 원활하게 실행하기 위해 적절한 작업과 도구를 정의해야합니다.
Q5. Autogen의 각 중첩 채팅 에이전트와 관련된 비용을 유지할 수 있습니까? A. 예, Autogen은 중첩 채팅에서 각 에이전트가 발생하는 비용을 추적 할 수 있습니다. 채팅 결과의 cost
속성에 액세스함으로써 개발자는 프록시 상호 작용과 관련된 지출을 모니터링하여 챗봇의 리소스 활용 및 효율성을 최적화 할 수 있습니다.
위 내용은 Autogen과의 다중 에이전트 중첩 채팅을 구축하는 4 단계의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!