67 lines
1.9 KiB
Python
67 lines
1.9 KiB
Python
|
|
from typing import List, Optional, Any, Dict
|
|||
|
|
from pydantic import BaseModel, Field
|
|||
|
|
|
|||
|
|
# 聊天请求
|
|||
|
|
class ChatRequest(BaseModel):
|
|||
|
|
query: str = Field(..., description="用户输入的消息")
|
|||
|
|
system_user_id: int = Field(..., description="系统用户ID(当前登录用户)")
|
|||
|
|
context_id: Optional[str] = Field(None, description="会话上下文ID")
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
json_schema_extra = {
|
|||
|
|
"example": {
|
|||
|
|
"query": "查看所有可用代理",
|
|||
|
|
"system_user_id": 1000000001,
|
|||
|
|
"context_id": "session-1234567890"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 聊天响应
|
|||
|
|
class ChatResponse(BaseModel):
|
|||
|
|
content: str = Field(..., description="AI 回复内容")
|
|||
|
|
context_id: str = Field(..., description="会话上下文ID")
|
|||
|
|
task_id: Optional[str] = Field(None, description="任务ID")
|
|||
|
|
status: str = Field(default="success", description="响应状态")
|
|||
|
|
|
|||
|
|
class Config:
|
|||
|
|
json_schema_extra = {
|
|||
|
|
"example": {
|
|||
|
|
"content": "系统中共有 4 个可用代理...",
|
|||
|
|
"context_id": "session-1234567890",
|
|||
|
|
"task_id": "task-abc123",
|
|||
|
|
"status": "success"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
# 错误响应
|
|||
|
|
class ErrorResponse(BaseModel):
|
|||
|
|
error: str = Field(..., description="错误类型")
|
|||
|
|
message: str = Field(..., description="错误消息")
|
|||
|
|
details: Optional[Dict[str, Any]] = Field(None, description="错误详情")
|
|||
|
|
|
|||
|
|
# A2A 消息部分
|
|||
|
|
class A2AMessagePart(BaseModel):
|
|||
|
|
kind: str = "text"
|
|||
|
|
text: str
|
|||
|
|
|
|||
|
|
# A2A 消息
|
|||
|
|
class A2AMessage(BaseModel):
|
|||
|
|
context_id: str
|
|||
|
|
role: str = "user"
|
|||
|
|
parts: List[A2AMessagePart]
|
|||
|
|
message_id: str
|
|||
|
|
|
|||
|
|
# A2A 请求
|
|||
|
|
class A2ARequest(BaseModel):
|
|||
|
|
jsonrpc: str = "2.0"
|
|||
|
|
method: str = "message/send"
|
|||
|
|
params: Dict[str, A2AMessage]
|
|||
|
|
id: int
|
|||
|
|
|
|||
|
|
# A2A 响应
|
|||
|
|
class A2AResponse(BaseModel):
|
|||
|
|
id: int
|
|||
|
|
jsonrpc: str
|
|||
|
|
result: Dict[str, Any]
|
|||
|
|
|