ReMe/examples/api/agentscope_example.py
2024-08-05 12:21:13 +08:00

82 lines
No EOL
2.2 KiB
Python

from typing import Optional, Union, Sequence
import agentscope
import sys
import os
from agentscope.agents import AgentBase, UserAgent
from agentscope.message import Msg
from memoryscope import MemoryScope, Arguments
class MemoryScopeAgent(AgentBase):
def __init__(self, name: str, arguments: Arguments, **kwargs) -> None:
# Disable AgentScope memory and use MemoryScope memory instead
super().__init__(name, use_memory=False, **kwargs)
# Create a memory client in MemoryScope
self.memory_scope = MemoryScope(arguments=arguments)
self.memory_scope.init_context_by_config()
self.memory_chat = self.memory_scope.default_memory_chat
def reply(self, x: Optional[Union[Msg, Sequence[Msg]]] = None) -> Msg:
# Generate response
response = self.memory_chat.chat_with_memory(query=x.content)
# Wrap the response in a message object in AgentScope
msg = Msg(name=self.name, content=response.message.content, role="Assistant")
# Print/speak the message in this agent's voice
self.speak(msg)
return msg
def close(self):
# Close the backend service of MemoryScope
self.memory_scope.close()
def main():
# Setting of MemoryScope
arguments = Arguments(
language="cn",
human_name="User",
assistant_name="AI",
logger_to_screen=False,
memory_chat_class="api_memory_chat",
generation_backend="dashscope_generation",
generation_model="qwen-max",
embedding_backend="dashscope_embedding",
embedding_model="text-embedding-v2",
use_dummy_ranker=False,
rank_backend="dashscope_rank",
rank_model="gte-rerank"
)
# Initialize AgentScope
agentscope.init(
project="MemoryScope",
)
memoryscope_agent = MemoryScopeAgent(
name="Assistant",
arguments=arguments
)
user_agent = UserAgent()
# Dialog
msg = None
while True:
# User input
msg = user_agent(msg)
if msg.content == "exit":
break
# Agent speaks
msg = memoryscope_agent(msg)
# End memory
memoryscope_agent.close()
if __name__ == "__main__":
main()