Skip to main content

与Llamaindex代理进行群聊

Llamaindex代理具有使用规划策略回答用户问题的能力。它们可以轻松地集成到Autogen中。

要求

! pip install pyautogen
! pip install llama-index
! pip install llama-index-tools-wikipedia
! pip install llama-index-readers-wikipedia
! pip install wikipedia

设置API端点

import os

import autogen

config_list = [{"model": "gpt-3.5-turbo-0125", "api_key": os.getenv("OPENAI_API_KEY")}]

设置Llamaindex

from llama_index.core import Settings
from llama_index.core.agent import ReActAgent
from llama_index.embeddings.openai import OpenAIEmbedding
from llama_index.llms.openai import OpenAI
from llama_index.tools.wikipedia import WikipediaToolSpec

llm = OpenAI(
model="gpt-3.5-turbo-0125",
temperature=0.0,
api_key=os.environ.get("OPENAPI_API_KEY", ""),
)

embed_model = OpenAIEmbedding(
model="text-embedding-ada-002",
temperature=0.0,
api_key=os.environ.get("OPENAPI_API_KEY", ""),
)

Settings.llm = llm
Settings.embed_model = embed_model

# 创建一个ReAct代理来使用维基百科工具
wiki_spec = WikipediaToolSpec()
# 获取搜索维基百科工具
wikipedia_tool = wiki_spec.to_tool_list()[1]

location_specialist = ReActAgent.from_tools(tools=[wikipedia_tool], llm=llm, max_iterations=10, verbose=True)

创建代理

在这个例子中,我们将创建一个Llamaindex代理来回答从维基百科获取的数据和一个用户代理。

from llamaindex_conversable_agent import LLamaIndexConversableAgent

llm_config = {
"temperature": 0,
"config_list": config_list,
}

trip_assistant = LLamaIndexConversableAgent(
"旅行专家",
llama_index_agent=location_specialist,
system_message="您可以帮助客户了解他们想要参观的地方的更多信息。在与客户互动时,您可以使用外部资源提供更多细节。",
description="这个代理帮助客户发现要参观的地点、要做的事情以及有关地点的其他细节。它可以使用外部资源提供更多细节。这个代理帮助找到景点、历史和关于一个地方的所有信息。",
)

user_proxy = autogen.UserProxyAgent(
name="管理员",
human_input_mode="始终",
code_execution_config=False,
)

接下来,让我们设置我们的群聊。

groupchat = autogen.GroupChat(
agents=[trip_assistant, user_proxy],
messages=[],
max_round=500,
speaker_selection_method="round_robin",
enable_clear_history=True,
)
manager = autogen.GroupChatManager(groupchat=groupchat, llm_config=llm_config)
chat_result = user_proxy.initiate_chat(
manager,
message="""
我在东京能找到与宫崎骏和他的电影《千与千寻》相关的东西吗?
""",
)