消息#
1. 概念#
BaseMessage类是CAMEL聊天系统中消息对象的基类。它旨在为系统中的消息提供统一的结构,并允许在不同消息类型之间轻松转换。
所有代码也可以在colab笔记本中获取此处。
2. 开始使用#
2.1 创建BaseMessage实例#
要创建一个BaseMessage实例,您需要提供以下参数:
role_name: 用户或助手角色的名称。role_type: 角色类型,可以是RoleType.ASSISTANT或RoleType.USER。meta_dict: 消息的可选元数据字典。content: 消息的内容。
以下是您可以传递的可选参数:
video_bytes: 可选的消息关联视频字节数据。image_list: 可选的消息关联PIL图像对象列表。image_detail: 与消息关联图像的细节级别。默认为"auto"。video_detail: 与消息关联的视频的详细级别。默认为"low"。
以下是一个创建 BaseMessage 实例的示例:
from camel.messages import BaseMessage
from camel.types import RoleType
message = BaseMessage(
role_name="test_user",
role_type=RoleType.USER,
content="test content"
)
此外,BaseMessage类提供了便捷的类方法,用于轻松创建用户和智能代理消息:
创建用户代理消息:
from camel.messages import BaseMessage user_message = BaseMessage.make_user_message( role_name="user_name", content="test content for user", )
创建助理代理消息:
from camel.messages import BaseMessage assistant_message = BaseMessage.make_assistant_message( role_name="assistant_name", content="test content for assistant", )
2.2 使用BaseMessage类的方法#
BaseMessage 类提供了以下几种方法:
创建带有更新内容的新实例:
new_message = message.create_new_instance("new test content") print(isinstance(new_message, BaseMessage)) >>> True
转换为
OpenAIMessage对象:openai_message = message.to_openai_message(role_at_backend=OpenAIBackendRole.USER) print(openai_message == {"role": "user", "content": "test content"}) >>> True
转换为
OpenAISystemMessage对象:openai_system_message = message.to_openai_system_message() print(openai_system_message == {"role": "system", "content": "test content"}) >>> True
转换为
OpenAIUserMessage对象:openai_user_message = message.to_openai_user_message() print(openai_user_message == {"role": "user", "content": "test content"}) >>> True
转换为
OpenAIAssistantMessage对象:openai_assistant_message = message.to_openai_assistant_message() print(openai_assistant_message == {"role": "assistant", "content": "test content"}) >>> True
转换为字典:
message_dict = message.to_dict() print(message_dict == { "role_name": "test_user", "role_type": "USER", "content": "test content" }) >>> True
这些方法允许您根据需求将BaseMessage实例转换为不同的消息类型。
3. 将BaseMessage提供给ChatAgent#
from io import BytesIO
import requests
from PIL import Image
from camel.agents import ChatAgent
from camel.messages import BaseMessage
# URL of the image
url = "https://raw.githubusercontent.com/camel-ai/camel/master/misc/logo_light.png"
response = requests.get(url)
img = Image.open(BytesIO(response.content))
# Define system message
sys_msg = BaseMessage.make_assistant_message(
role_name="Assistant",
content="You are a helpful assistant.",
)
# Set agent
camel_agent = ChatAgent(system_message=sys_msg)
# Set user message
user_msg = BaseMessage.make_user_message(
role_name="User", content="""what's in the image?""", image_list=[img]
)
# Get response information
response = camel_agent.step(user_msg)
print(response.msgs[0].content)
>>> The image features a logo for "CAMEL-AI." It includes a stylized purple camel graphic alongside the text "CAMEL-AI," which is also in purple. The design appears modern and is likely related to artificial intelligence.
4. 结论#
在本环节中,我们介绍了BaseMessage类及其转换为不同类型消息的功能。这些组件在CAMEL聊天系统中扮演着关键角色,能够清晰高效地实现消息的创建、管理和解析。