init
This commit is contained in:
78
functionality/rag/react_agent_integration.py
Normal file
78
functionality/rag/react_agent_integration.py
Normal file
@@ -0,0 +1,78 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""The example of integrating ReAct agent with RAG."""
|
||||
import asyncio
|
||||
import os
|
||||
|
||||
from agentscope.agent import ReActAgent, UserAgent
|
||||
from agentscope.embedding import DashScopeTextEmbedding
|
||||
from agentscope.formatter import DashScopeChatFormatter
|
||||
from agentscope.message import Msg
|
||||
from agentscope.model import DashScopeChatModel
|
||||
from agentscope.rag import QdrantStore, SimpleKnowledge, TextReader
|
||||
|
||||
|
||||
async def main() -> None:
|
||||
"""The main entry point for the ReAct agent with RAG example."""
|
||||
|
||||
# Create an in-memory knowledge base instance
|
||||
print("Creating the knowledge base...")
|
||||
knowledge = SimpleKnowledge(
|
||||
embedding_store=QdrantStore(
|
||||
location=":memory:",
|
||||
collection_name="test_collection",
|
||||
dimensions=1024, # The dimension of the embedding vectors
|
||||
),
|
||||
embedding_model=DashScopeTextEmbedding(
|
||||
api_key=os.environ["DASHSCOPE_API_KEY"],
|
||||
model_name="text-embedding-v4",
|
||||
),
|
||||
)
|
||||
|
||||
# Insert some documents into the knowledge base
|
||||
# This could be done offline and only once
|
||||
print("Inserting documents into the knowledge base...")
|
||||
reader = TextReader(chunk_size=100, split_by="char")
|
||||
documents = await reader(
|
||||
# Fake personal profile for demonstration
|
||||
"I'm John Doe, 28 years old. My best friend is James "
|
||||
"Smith. I live in San Francisco. I work at OpenAI as a "
|
||||
"software engineer. I love hiking and photography. "
|
||||
"My father is Michael Doe, a doctor. I'm very proud of him. "
|
||||
"My mother is Sarah Doe, a teacher. She is very kind and "
|
||||
"always helps me with my studies.\n"
|
||||
"I'm now a PhD student at Stanford University, majoring in "
|
||||
"Computer Science. My advisor is Prof. Jane Williams, who is "
|
||||
"a leading expert in artificial intelligence. I have published "
|
||||
"several papers in top conferences, such as NeurIPS and ICML. ",
|
||||
)
|
||||
|
||||
print("Inserting documents into the knowledge base...")
|
||||
await knowledge.add_documents(documents)
|
||||
|
||||
# Integrate into the ReActAgent by the `knowledge` argument
|
||||
print("Creating the agent...")
|
||||
agent = ReActAgent(
|
||||
name="Friday",
|
||||
sys_prompt="You are a helpful assistant named Friday.",
|
||||
model=DashScopeChatModel(
|
||||
api_key=os.environ["DASHSCOPE_API_KEY"],
|
||||
model_name="qwen-max",
|
||||
),
|
||||
formatter=DashScopeChatFormatter(),
|
||||
# Equip the agent with the knowledge base
|
||||
knowledge=knowledge,
|
||||
print_hint_msg=True,
|
||||
)
|
||||
user = UserAgent(name="user")
|
||||
|
||||
# Start the conversation
|
||||
print("Start the conversation...")
|
||||
msg = Msg("user", "Do you know who is my best friend?", "user")
|
||||
while True:
|
||||
msg = await agent(msg)
|
||||
msg = await user(msg)
|
||||
if msg.get_text_content() == "exit":
|
||||
break
|
||||
|
||||
|
||||
asyncio.run(main())
|
||||
Reference in New Issue
Block a user