from flask_restful import fields from fields.conversation_fields import message_file_fields from libs.helper import TimestampField from .raws import FilesContainedField feedback_fields = {"rating": fields.String} retriever_resource_fields = { "id": fields.String, "message_id": fields.String, "position": fields.Integer, "dataset_id": fields.String, "dataset_name": fields.String, "document_id": fields.String, "document_name": fields.String, "data_source_type": fields.String, "segment_id": fields.String, "score": fields.Float, "hit_count": fields.Integer, "word_count": fields.Integer, "segment_position": fields.Integer, "index_node_hash": fields.String, "content": fields.String, "created_at": TimestampField, } feedback_fields = {"rating": fields.String} agent_thought_fields = { "id": fields.String, "chain_id": fields.String, "message_id": fields.String, "position": fields.Integer, "thought": fields.String, "tool": fields.String, "tool_labels": fields.Raw, "tool_input": fields.String, "created_at": TimestampField, "observation": fields.String, "files": fields.List(fields.String), } retriever_resource_fields = { "id": fields.String, "message_id": fields.String, "position": fields.Integer, "dataset_id": fields.String, "dataset_name": fields.String, "document_id": fields.String, "document_name": fields.String, "data_source_type": fields.String, "segment_id": fields.String, "score": fields.Float, "hit_count": fields.Integer, "word_count": fields.Integer, "segment_position": fields.Integer, "index_node_hash": fields.String, "content": fields.String, "created_at": TimestampField, } message_fields = { "id": fields.String, "conversation_id": fields.String, "parent_message_id": fields.String, "inputs": FilesContainedField, "query": fields.String, "answer": fields.String(attribute="re_sign_file_url_answer"), "feedback": fields.Nested(feedback_fields, attribute="user_feedback", allow_null=True), "retriever_resources": fields.List(fields.Nested(retriever_resource_fields)), "created_at": TimestampField, "agent_thoughts": fields.List(fields.Nested(agent_thought_fields)), "message_files": fields.List(fields.Nested(message_file_fields)), "status": fields.String, "error": fields.String, } message_infinite_scroll_pagination_fields = { "limit": fields.Integer, "has_more": fields.Boolean, "data": fields.List(fields.Nested(message_fields)), }