Chatbots haben sich mit den Entwicklungen in exponentiell weiterentwickelt künstliche Intelligenz (KI). Mit dem Aufkommen von KI-Agenten sind sie nun in der Lage, komplexere und vielschichtigere Interaktionen zu bewältigen, die weit über die traditionellen Konversationsgrenzen hinausgehen. In unserem vorherigen Artikel über Erstellen von Multi-Agent-Chatbots mit AutoGenhaben wir das Konzept des sequentiellen Chats mit AutoGen untersucht, der eine strukturierte, rundenbasierte Kommunikation zwischen mehreren Agenten ermöglicht. Aufbauend auf dieser Grundlage wenden wir uns nun einer komplexeren Funktion zu: dem verschachtelten Chat. Mit dem robusten Framework von AutoGen ermöglichen verschachtelte Konversationen Bots, einen fließenden Austausch aufrechtzuerhalten, anstatt einer festen Reihenfolge zu folgen. Sie können sich in andere Instruments vertiefen, mit Unterbrechungen umgehen und reibungslos fortfahren – und das alles in einem einzigen Gesprächsablauf. Dieser Artikel führt Sie durch die Implementierung von verschachteltem Chat in AutoGen und hebt seine Relevanz für die Erstellung reaktionsfähiger, dynamischer Agenteninteraktionen hervor.
Was ist verschachtelter Chat?
Beginnen wir damit, zu verstehen, was ein verschachtelter Chat ist.
Stellen Sie sich einen Chat mit drei Agenten vor, bei dem zwei Agenten wiederholt in einer Schleife miteinander sprechen müssen. Dieser Chat zwischen zwei Agenten kann zu einem verschachtelten Chat hinzugefügt werden. Sobald dieses separate Gespräch abgeschlossen ist, kann der Agent den Kontext zum Hauptgespräch zurückbringen.
Die folgende Abbildung zeigt den Konvertierungsfluss eines verschachtelten Chats.
Wenn die eingehende Nachricht eine Bedingung auslöst, wird diese Nachricht an den verschachtelten Chat weitergeleitet. Bei dieser Verschachtelung kann es sich um einen Zwei-Agenten-Chat, einen sequentiellen Chat oder einen anderen Chat handeln. Anschließend werden die Chat-Ergebnisse des verschachtelten Chats an die Hauptkonversation zurückgesendet.
Implementierung von Nested Chat in AutoGen
In diesem Artikel erstellen wir ein System zum Schreiben von Artikeln mithilfe eines verschachtelten Chats. Zu diesem Zweck erstellen wir drei Agenten – einen zum Verfassen einer Gliederung des Artikels, einen anderen zum Verfassen des Artikels auf Grundlage dieser Gliederung und einen weiteren zum Überprüfen des Artikels. Wir möchten, dass der Autor und der Rezensent mehrmals miteinander sprechen, additionally führen wir diese beiden in einem verschachtelten Chat zusammen.
Darüber hinaus stellen wir dem Define-Agenten Zugriff auf ein Device zur Abfrage des Webs zur Verfügung.
Lassen Sie uns dies nun mit Code implementieren.
Voraussetzungen
Stellen Sie vor dem Erstellen von AutoGen-Agenten sicher, dass Sie über die erforderlichen API-Schlüssel für die erforderlichen LLMs verfügen. Für diese Übung werden wir Tavily auch zum Durchsuchen des Internets verwenden.
Laden Sie die .env-Datei mit den benötigten API-Schlüsseln. Hier werden wir OpenAI verwenden und Tavily API-Schlüssel ().
from dotenv import load_dotenv
load_dotenv('/house/santhosh/Tasks/programs/Pinnacle/.env')
Definieren Sie den LLM, der als config_list verwendet werden soll
config_list = {
"config_list": ({"mannequin": "gpt-4o-mini", "temperature": 0.2})
}
Wichtige Bibliotheken erforderlich
Autogen-Agentchat – 0.2.37
Tavily-Python – 0.5.0
Kommen wir nun zur Umsetzung.
Schritt 1: Definieren Sie den Define Agent mit dem Device Use
Definieren Sie den user_proxy-Agenten, der das Device auch ausführt. Definieren Sie dann den Gliederungsagenten mithilfe des LLM, um die Artikelgliederung zu generieren.
from autogen import ConversableAgent
user_proxy = ConversableAgent(
identify="Person",
llm_config=False,
is_termination_msg=lambda msg: msg.get("content material") will not be None and "TERMINATE" in msg("content material"),
human_input_mode="TERMINATE")
define = ConversableAgent(
identify="Article_outline",
system_message="""You might be an skilled content material strategist tasked with creating an in depth define
for an article on a specified subject. Your purpose is to prepare the article into
logical sections that assist convey the primary concepts clearly and successfully.
Use the web_search software if wanted.
Return 'TERMINATE' when the duty is finished.""",
llm_config=config_list,
silent=False,
)
Definieren Sie die Funktion web_search, um das Net abzufragen.
def web_search(question: str) -> str:
tavily_client = TavilyClient()
response = tavily_client.search(question, max_results=3, days=10, include_raw_content=True)
return response('outcomes')
Registrieren Sie die web_search-Funktion beim Define-Agenten mit dem Executor als user_proxy.
Wir machen den Executor zum user_proxy, damit wir die Gliederung überprüfen können, die an den Author-Agenten geht.
register_function(
web_search,
caller=define, # The assistant agent can counsel calls.
executor=user_proxy, # The consumer proxy agent can execute the calls.
identify="web_search", # By default, the perform identify is used because the software identify.
description="Searches web to get the outcomes a for given question", # An outline of the software.
)
Schritt 2: Definieren Sie die Autoren- und Prüfer-Agenten
Definieren Sie einen Agenten, der den Artikelinhalt generiert, und einen anderen, der den Artikel überprüft und Verbesserungsvorschläge macht.
author = ConversableAgent(
identify="Article_Writer",
system_message="""You're a expert author assigned to create a complete, partaking article
primarily based on a given define. Your purpose is to comply with the construction offered within the define,
increasing on every part with well-researched, clear, and informative content material.
Preserve the article size to round 500 phrases.
Use the web_search software if wanted.
Return 'TERMINATE' when the duty is finished.""",
llm_config=config_list,
silent=False,
)
reviewer = ConversableAgent(
identify="Article_Reviewer",
system_message="""You're a expert article reviewer who can assessment technical articles.
Evaluate the given article and supply strategies to make the article extra partaking and attention-grabbing.
""",
llm_config=config_list,
silent=False,
)
Schritt 3: Registrieren Sie den Nested Chat
Wir können nun die verschachtelten Chats für beide Agenten registrieren.
author.register_nested_chats(
set off=user_proxy,
chat_queue=(
{
"sender": reviewer,
"recipient": author,
"summary_method": "last_msg",
"max_turns": 2,
}
),
)
Wenn user_proxy im obigen Code eine Nachricht an den Author-Agenten sendet, wird dadurch der verschachtelte Chat ausgelöst. Dann schreibt der Autorenagent den Artikel und der Prüferagent überprüft den Artikel so oft wie max_turns, in diesem Fall zwei. Abschließend wird das Ergebnis des verschachtelten Chats an den Benutzeragenten zurückgesendet.
Schritt 4: Starten Sie den verschachtelten Chat
Nachdem nun alles eingerichtet ist, starten wir den Chat
chat_results = user_proxy.initiate_chats(
({"recipient": define,
"message": "Write an article on Magentic-One agentic system launched by Microsoft.",
"summary_method": "last_msg",
},
{"recipient": author,
"message": "That is the article define",
"summary_method": "last_msg",
}))
Hier werden wir einen Artikel über das Magentic-One-Agentensystem schreiben. Zuerst initiiert der user_proxy-Agent einen Chat mit dem Define-Agenten und dann mit dem Author-Agenten.
Die Ausgabe des obigen Codes sieht nun wie folgt aus:
Wie wir sehen können, sendet der user_proxy zunächst eine Nachricht mit dem Thema des Artikels an den Define Agent. Dadurch wird der Device-Aufruf ausgelöst und user_proxy führt das Device aus. Basierend auf diesen Ergebnissen generiert der Gliederungsagent die Gliederung und sendet sie an den Schreibagenten. Danach wird der verschachtelte Chat zwischen dem Autor-Agenten und dem Reviewer-Agenten wie oben beschrieben fortgesetzt.
Drucken wir nun das Endergebnis aus, nämlich den Artikel über Magentic-One.
print(chat_results(1).chat_history(-2)('content material'))
Abschluss
Der verschachtelte Chat in AutoGen verbessert die Chatbot-Funktionen, indem er komplexe Multitasking-Interaktionen innerhalb eines einzigen Gesprächsablaufs ermöglicht. Mit geschachteltem Chat können Bots separate, spezialisierte Chats initiieren und ihre Ausgaben nahtlos integrieren. Diese Funktion unterstützt dynamische, gezielte Reaktionen in verschiedenen Anwendungen, vom E-Commerce bis zum Gesundheitswesen. Mit verschachteltem Chat ebnet AutoGen den Weg für reaktionsfähigere, kontextbewusste KI-Systeme. Dies ermöglicht es Entwicklern, anspruchsvolle Chatbots zu erstellen, die unterschiedliche Benutzeranforderungen effizient erfüllen.
Wenn Sie mehr über KI-Agenten erfahren möchten, schauen Sie sich unser exklusives Angebot an Agentisches KI-Pionierprogramm!
Häufig gestellte Fragen
A. Der verschachtelte Chat in AutoGen ermöglicht es einem Chatbot, mehrere Unterkonversationen innerhalb eines einzigen Chat-Flows zu verwalten, wobei häufig andere Agenten oder Instruments zum Abrufen spezifischer Informationen beteiligt sind. Im Gegensatz zum sequenziellen Chat, der einem strukturierten, rundenbasierten Ansatz folgt, ermöglicht der verschachtelte Chat Bots, Unterbrechungen und parallele Aufgaben zu bewältigen und ihre Ausgaben wieder in die Hauptkonversation zu integrieren.
A. Nested Chat verbessert den Kundensupport, indem es Bots ermöglicht, Aufgaben an spezialisierte Agenten zu delegieren. Im E-Commerce kann ein Chatbot beispielsweise einen separaten Agenten konsultieren, um den Bestellstatus oder Produktinformationen zu überprüfen, und die Informationen dann nahtlos an den Benutzer zurücksenden, um schnellere und genauere Antworten zu gewährleisten.
A. Verschachtelter Chat kann in verschiedenen Branchen eingesetzt werden. Im Banking bietet es spezialisierte Unterstützung bei Konto- und Kreditanfragen; im Personalwesen unterstützt es bei Onboarding-Aufgaben; Im Gesundheitswesen werden Terminvereinbarungs- und Abrechnungsanfragen bearbeitet. Durch diese Flexibilität eignet sich Nested Chat für jede Domäne, die Multitasking und detaillierte Informationsverarbeitung erfordert.
A. Ja, die Implementierung von verschachteltem Chat in AutoGen erfordert die Konfiguration von Agenten mit bestimmten API-Schlüsseln, etwa für Sprachmodelle oder Websuchtools wie Tavily. Darüber hinaus müssen jedem Agenten geeignete Aufgaben und Instruments für die reibungslose Durchführung verschachtelter Gespräche zugewiesen werden.
A. Ja, AutoGen ermöglicht die Verfolgung der Kosten, die jedem Agenten in einem verschachtelten Chat entstehen. Durch den Zugriff auf das Attribut „Kosten“ in den Chat-Ergebnissen können Entwickler die Ausgaben im Zusammenhang mit Agenteninteraktionen überwachen und so die Ressourcennutzung und Effizienz des Chatbots optimieren.