|
2 | 2 | from logging import getLogger |
3 | 3 | from typing import TYPE_CHECKING |
4 | 4 |
|
5 | | -from drf_spectacular.utils import ( |
6 | | - PolymorphicProxySerializer, |
7 | | - extend_schema_field, |
8 | | -) |
| 5 | +from drf_spectacular.utils import PolymorphicProxySerializer, extend_schema_field |
9 | 6 | from lxml import etree |
10 | 7 | from lxml.etree import XMLSyntaxError |
11 | 8 | from rest_framework import serializers |
12 | 9 | from rest_framework.exceptions import ValidationError |
13 | 10 |
|
14 | 11 | from back.apps.broker.models.message import AgentType, Satisfaction |
| 12 | +from back.apps.fsm.models import FSMDefinition |
15 | 13 | from back.common.abs.bot_consumers import BotConsumer |
16 | 14 | from back.common.serializer_fields import JSTimestampField |
17 | | -from back.apps.fsm.models import FSMDefinition |
18 | 15 | from back.config.storage_backends import ( |
19 | 16 | PrivateMediaLocalStorage, |
20 | | - select_private_storage |
| 17 | + select_private_storage, |
21 | 18 | ) |
22 | 19 |
|
23 | 20 | if TYPE_CHECKING: |
@@ -110,20 +107,23 @@ class Reference(serializers.Serializer): |
110 | 107 | knowledge_base_id = serializers.CharField(required=False, allow_null=True, allow_blank=True) |
111 | 108 |
|
112 | 109 |
|
113 | | -class ToolUse(serializers.Serializer): |
| 110 | +class ToolUsePayload(serializers.Serializer): |
114 | 111 | id = serializers.CharField(required=True) |
115 | 112 | name = serializers.CharField(required=True) |
116 | 113 | args = serializers.JSONField(required=True) |
117 | 114 | text = serializers.CharField(required=False, allow_null=True, allow_blank=True) |
118 | 115 |
|
119 | 116 |
|
| 117 | +class ToolResultPayload(serializers.Serializer): |
| 118 | + id = serializers.CharField(required=False, allow_null=True, allow_blank=True) |
| 119 | + name = serializers.CharField(required=False, allow_null=True, allow_blank=True) |
| 120 | + result = serializers.CharField(required=True) |
| 121 | + |
| 122 | + |
120 | 123 | class MessagePayload(serializers.Serializer): |
121 | | - class _MessagePayload(serializers.Serializer): |
122 | | - content = serializers.CharField(trim_whitespace=False, allow_blank=True) |
123 | | - references = Reference(required=False, allow_null=True) |
124 | | - tool_use = ToolUse(many=True, required=False, allow_null=True, allow_empty=True) |
| 124 | + content = serializers.SerializerMethodField() |
| 125 | + references = Reference(required=False, allow_null=True) |
125 | 126 |
|
126 | | - payload = _MessagePayload() |
127 | 127 |
|
128 | 128 | class HTMLPayload(serializers.Serializer): |
129 | 129 | @staticmethod |
@@ -163,6 +163,8 @@ class QuickRepliesPayload(serializers.Serializer): |
163 | 163 | "ImagePayload": ImagePayload, |
164 | 164 | "SatisfactionPayload": SatisfactionPayload, |
165 | 165 | "QuickRepliesPayload": QuickRepliesPayload, |
| 166 | + "ToolUsePayload": ToolUsePayload, |
| 167 | + "ToolResultPayload": ToolResultPayload, |
166 | 168 | }, |
167 | 169 | ) |
168 | 170 | ) |
|
0 commit comments