c3bf08ac8d
K8s Workspace Integration Tests / k8s-workspace-tests (push) Waiting to run
Pre-commit / run (ubuntu-latest) (push) Waiting to run
Python Unittest Coverage / test (macos-15, 3.11) (push) Waiting to run
Python Unittest Coverage / test (ubuntu-latest, 3.11) (push) Waiting to run
Python Unittest Coverage / test (windows-latest, 3.11) (push) Waiting to run
Web UI / check (push) Waiting to run
272 lines
8.2 KiB
Python
272 lines
8.2 KiB
Python
# -*- coding: utf-8 -*-
|
|
"""A template test case."""
|
|
from unittest.async_case import IsolatedAsyncioTestCase
|
|
from utils import AnyString
|
|
|
|
from agentscope.message import (
|
|
UserMsg,
|
|
TextBlock,
|
|
DataBlock,
|
|
URLSource,
|
|
Base64Source,
|
|
ThinkingBlock,
|
|
AssistantMsg,
|
|
HintBlock,
|
|
Msg,
|
|
ToolCallBlock,
|
|
ToolResultBlock,
|
|
ToolResultState,
|
|
)
|
|
|
|
|
|
class MessageTest(IsolatedAsyncioTestCase):
|
|
"""The template test case."""
|
|
|
|
async def test_creating_message(self) -> None:
|
|
"""The template test."""
|
|
# Test string content
|
|
user_msg = UserMsg(name="user", content="hello world")
|
|
self.assertDictEqual(
|
|
user_msg.model_dump(),
|
|
{
|
|
"id": AnyString(),
|
|
"name": "user",
|
|
"role": "user",
|
|
"content": [
|
|
{
|
|
"id": AnyString(),
|
|
"text": "hello world",
|
|
"type": "text",
|
|
},
|
|
],
|
|
"metadata": {},
|
|
"created_at": AnyString(),
|
|
"finished_at": AnyString(),
|
|
"usage": None,
|
|
},
|
|
)
|
|
|
|
# Test list of content
|
|
user_msg = UserMsg(
|
|
name="user",
|
|
content=[TextBlock(text="1"), TextBlock(text="2")],
|
|
)
|
|
self.assertDictEqual(
|
|
user_msg.model_dump(),
|
|
{
|
|
"id": AnyString(),
|
|
"name": "user",
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": "1", "id": AnyString()},
|
|
{"type": "text", "text": "2", "id": AnyString()},
|
|
],
|
|
"metadata": {},
|
|
"created_at": AnyString(),
|
|
"finished_at": AnyString(),
|
|
"usage": None,
|
|
},
|
|
)
|
|
|
|
# Test DataBlock content
|
|
user_msg = UserMsg(
|
|
name="user",
|
|
content=[
|
|
TextBlock(text="1"),
|
|
DataBlock(
|
|
source=URLSource(
|
|
url="https://example.com/image.png",
|
|
media_type="image/png",
|
|
),
|
|
),
|
|
DataBlock(
|
|
source=Base64Source(
|
|
data="iVBORw0KGgoAAAANSUhEUgAAAAUA",
|
|
media_type="image/png",
|
|
),
|
|
),
|
|
],
|
|
)
|
|
|
|
self.assertDictEqual(
|
|
user_msg.model_dump(),
|
|
{
|
|
"id": AnyString(),
|
|
"name": "user",
|
|
"role": "user",
|
|
"content": [
|
|
{"type": "text", "text": "1", "id": AnyString()},
|
|
{
|
|
"type": "data",
|
|
"id": AnyString(),
|
|
"source": {
|
|
"type": "url",
|
|
"url": "https://example.com/image.png",
|
|
"media_type": "image/png",
|
|
},
|
|
"name": None,
|
|
},
|
|
{
|
|
"type": "data",
|
|
"id": AnyString(),
|
|
"source": {
|
|
"type": "base64",
|
|
"data": "iVBORw0KGgoAAAANSUhEUgAAAAUA",
|
|
"media_type": "image/png",
|
|
},
|
|
"name": None,
|
|
},
|
|
],
|
|
"metadata": {},
|
|
"created_at": AnyString(),
|
|
"finished_at": AnyString(),
|
|
"usage": None,
|
|
},
|
|
)
|
|
|
|
# Test thinking content
|
|
msg = AssistantMsg(
|
|
name="assistant",
|
|
content=[ThinkingBlock(thinking="thinking...")],
|
|
)
|
|
self.assertDictEqual(
|
|
msg.model_dump(),
|
|
{
|
|
"id": AnyString(),
|
|
"name": "assistant",
|
|
"role": "assistant",
|
|
"content": [
|
|
{
|
|
"type": "thinking",
|
|
"thinking": "thinking...",
|
|
"id": AnyString(),
|
|
},
|
|
],
|
|
"metadata": {},
|
|
"created_at": AnyString(),
|
|
"finished_at": None,
|
|
"usage": None,
|
|
},
|
|
)
|
|
|
|
# Test hint content
|
|
msg = AssistantMsg(
|
|
name="assistant",
|
|
content=[HintBlock(hint="hint...")],
|
|
)
|
|
self.assertDictEqual(
|
|
msg.model_dump(),
|
|
{
|
|
"id": AnyString(),
|
|
"name": "assistant",
|
|
"role": "assistant",
|
|
"content": [
|
|
{
|
|
"type": "hint",
|
|
"hint": "hint...",
|
|
"id": AnyString(),
|
|
"source": None,
|
|
},
|
|
],
|
|
"metadata": {},
|
|
"created_at": AnyString(),
|
|
"finished_at": None,
|
|
"usage": None,
|
|
},
|
|
)
|
|
|
|
async def test_invalid_message(self) -> None:
|
|
"""Test invalid message creation."""
|
|
# User message with thinking block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="user",
|
|
role="user",
|
|
content=[ThinkingBlock(thinking="thinking...")],
|
|
)
|
|
|
|
# User message with hint block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="user",
|
|
role="user",
|
|
content=[HintBlock(hint="hint...")],
|
|
)
|
|
|
|
# User message with tool call block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="user",
|
|
role="user",
|
|
content=[ToolCallBlock(id="1", name="tool", input="{}")],
|
|
)
|
|
|
|
# User message with tool result block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="user",
|
|
role="user",
|
|
content=[
|
|
ToolResultBlock(
|
|
id="1",
|
|
name="tool",
|
|
output="result",
|
|
state=ToolResultState.SUCCESS,
|
|
),
|
|
],
|
|
)
|
|
|
|
# System message with data block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="system",
|
|
role="system",
|
|
content=[
|
|
DataBlock(
|
|
source=URLSource(
|
|
url="https://example.com/image.png",
|
|
media_type="image/png",
|
|
),
|
|
),
|
|
],
|
|
)
|
|
|
|
# System message with thinking block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="system",
|
|
role="system",
|
|
content=[ThinkingBlock(thinking="thinking...")],
|
|
)
|
|
|
|
# System message with hint block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="system",
|
|
role="system",
|
|
content=[HintBlock(hint="hint...")],
|
|
)
|
|
|
|
# System message with tool call block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="system",
|
|
role="system",
|
|
content=[ToolCallBlock(id="1", name="tool", input="{}")],
|
|
)
|
|
|
|
# System message with tool result block should raise ValueError
|
|
with self.assertRaises(ValueError):
|
|
Msg(
|
|
name="system",
|
|
role="system",
|
|
content=[
|
|
ToolResultBlock(
|
|
id="1",
|
|
name="tool",
|
|
output="result",
|
|
state=ToolResultState.SUCCESS,
|
|
),
|
|
],
|
|
)
|