244 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Thrift
		
	
	
	
			
		
		
	
	
			244 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Thrift
		
	
	
	
include "../base.thrift"
 | 
						||
include "common.thrift"
 | 
						||
include "message.thrift"
 | 
						||
namespace go conversation.run
 | 
						||
 | 
						||
struct parametersStruct {
 | 
						||
    1 : string value
 | 
						||
    2 : string resource_type // "uri"
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
// content type
 | 
						||
const string ContentTypeText = "text"
 | 
						||
const string ContentTypeImage = "image"
 | 
						||
const string ContentTypeAudio = "audio"
 | 
						||
const string ContentTypeVideo = "video"
 | 
						||
const string ContentTypeLink  = "link"
 | 
						||
const string ContentTypeMusic = "music"
 | 
						||
const string ContentTypeCard  = "card"
 | 
						||
const string ContentTypeAPP   = "app"
 | 
						||
const string ContentTypeFile  = "file"
 | 
						||
const string ContentTypeMix   = "mix"
 | 
						||
const string ContentTypeMixApi = "object_string"
 | 
						||
 | 
						||
// event type
 | 
						||
 | 
						||
const string RunEventMessage = "message"
 | 
						||
const string RunEventDone    = "done"
 | 
						||
const string RunEventError   = "error"
 | 
						||
 | 
						||
 | 
						||
 | 
						||
struct MixContentModel  {
 | 
						||
	1:list<Item> item_list
 | 
						||
	2:list<Item> refer_items
 | 
						||
}
 | 
						||
 | 
						||
struct Item  {
 | 
						||
	1: string type
 | 
						||
	2: string text
 | 
						||
	3: Image image
 | 
						||
	4: File file
 | 
						||
}
 | 
						||
 | 
						||
struct ImageDetail  {
 | 
						||
	1:string url
 | 
						||
	2:i32    width
 | 
						||
	3:i32    height
 | 
						||
}
 | 
						||
 | 
						||
struct File  {
 | 
						||
	1:string  file_key
 | 
						||
	2:string  file_name
 | 
						||
	3:string  file_type
 | 
						||
	4:i64     file_size
 | 
						||
	6:string  file_url
 | 
						||
}
 | 
						||
 | 
						||
struct Image  {
 | 
						||
	1: string key
 | 
						||
	2:ImageDetail image_thumb
 | 
						||
	3:ImageDetail image_ori
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
struct Tool {
 | 
						||
    1 : i64 plugin_id (api.js_conv='true')
 | 
						||
    2 : map<string,parametersStruct>  parameters
 | 
						||
    3 : string api_name
 | 
						||
    4 : i64 tool_id  (api.js_conv='true')
 | 
						||
}
 | 
						||
 | 
						||
enum DiffModeIdentifier {
 | 
						||
    ChatWithA = 1
 | 
						||
    ChatWithB = 2
 | 
						||
}
 | 
						||
 | 
						||
struct AdditionalContent {
 | 
						||
     1: required string type
 | 
						||
     2: optional string text
 | 
						||
     3: optional string file_url
 | 
						||
}
 | 
						||
 | 
						||
struct AgentRunRequest  {
 | 
						||
    1 :          i64             bot_id    (api.js_conv='true') , //agent id
 | 
						||
    2 : required i64             conversation_id  (api.js_conv='true')         , // 会话id
 | 
						||
    5 : required string             query                      ,
 | 
						||
    7 :          map<string,string> extra                      , // ext 透传字段
 | 
						||
    9 :          map<string,string> custom_variables           ,
 | 
						||
    10: optional bool               draft_mode                 , // 草稿bot or 线上bot
 | 
						||
    11: optional common.Scene              scene               , // explore场景
 | 
						||
    12: optional string             content_type               , // 文件 file 图片 image 等
 | 
						||
    13: optional i64             regen_message_id   (api.js_conv='true')          , // 重试消息id
 | 
						||
    14: optional string             local_message_id           , // 前端本地的message_id 在extra_info 里面透传返回
 | 
						||
    15: optional string             preset_bot                 , // 使用的bot模版 代替bot_id bot_version draft_mode参数, coze home使用 preset_bot="coze_home"
 | 
						||
    16: optional list<string>       insert_history_message_list,
 | 
						||
    17: optional string             device_id,
 | 
						||
    18: optional i64             space_id (api.js_conv='true'),
 | 
						||
    19: optional list<message.MsgParticipantInfo>  mention_list,
 | 
						||
    20: optional list<Tool> toolList
 | 
						||
    21: optional string     commit_version
 | 
						||
    22: optional string     sub_scene // scene粒度下进一步区分场景,目前仅给bot模版使用 = bot_template
 | 
						||
    23: optional DiffModeIdentifier diff_mode_identifier // diff模式下的聊天配置,仅草稿single bot
 | 
						||
    24: optional i64 shortcut_cmd_id  (api.js_conv='true')
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
 | 
						||
struct RunStreamResponse {
 | 
						||
    1: required message.ChatMessage message
 | 
						||
    2: optional bool        is_finish
 | 
						||
    3: required i32         index
 | 
						||
    4: required string      conversation_id
 | 
						||
    5: required i32         seq_id
 | 
						||
}
 | 
						||
 | 
						||
struct AgentRunResponse  {
 | 
						||
    1: i64    code
 | 
						||
    2: string msg
 | 
						||
}
 | 
						||
 | 
						||
struct ErrorData {
 | 
						||
    1: i64 code
 | 
						||
    2: string msg
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
struct CustomConfig {
 | 
						||
    1: optional ModelConfig ModelConfig (api.body = "model_config")
 | 
						||
    2: optional BotConfig BotConfig (api.body = "bot_config")
 | 
						||
}
 | 
						||
 | 
						||
struct ModelConfig{
 | 
						||
    1: optional string ModelID (api.body="model_id")
 | 
						||
}
 | 
						||
 | 
						||
struct BotConfig{
 | 
						||
    1: optional string CharacterName (api.body="character_name")
 | 
						||
    2: optional string Prompt (api.body="propmt")
 | 
						||
}
 | 
						||
struct ShortcutCommandDetail {
 | 
						||
    1: required i64 command_id (api.js_conv='true')
 | 
						||
    2: map<string,string> parameters  // key=参数名 value=值  object_string object 数组序列化之后的 JSON String
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
struct ChatV3Request {
 | 
						||
    1: required i64 BotID (api.body = "bot_id",api.js_conv='true'), //agent_id
 | 
						||
    2: optional i64 ConversationID (api.query = "conversation_id", api.js_conv='true'), //conversation_id
 | 
						||
    3: required string User (api.body = "user_id"), //user_id,数据隔离标识,需要保证唯一
 | 
						||
    4: optional bool Stream (api.body = "stream"), //是否流式,当前仅支持流失
 | 
						||
    5: optional list<EnterMessage> AdditionalMessages (api.body = "additional_messages"), //本次对话消息,当前仅支持role=user
 | 
						||
    6: optional map<string,string> CustomVariables (api.body = "custom_variables"), //用户自定义变量
 | 
						||
    8: optional map<string, string> MetaData (api.body = "meta_data")
 | 
						||
    10:optional CustomConfig CustomConfig (api.body = "custom_config")
 | 
						||
    11:optional map<string, string> ExtraParams (api.body = "extra_params") // 透传参数到 plugin/workflow 等下游
 | 
						||
    12:optional i64 ConnectorID (api.body="connector_id", api.js_conv='true') // 手动指定渠道 id 聊天。目前仅支持 websdk(=999)
 | 
						||
    13:optional ShortcutCommandDetail ShortcutCommand (api.body="shortcut_command") // 指定快捷指令
 | 
						||
}
 | 
						||
 | 
						||
struct ChatV3MessageDetail {
 | 
						||
    1: required string ID (api.body = "id"),
 | 
						||
    2: required string ConversationID (api.body = "conversation_id"),
 | 
						||
    3: required string BotID (api.body = "bot_id"),
 | 
						||
    4: required string Role (api.body = "role"),
 | 
						||
    5: required string Type (api.body = "type"),
 | 
						||
    6: required string Content (api.body = "content"),
 | 
						||
    7: required string ContentType (api.body = "content_type"),
 | 
						||
    8: optional map<string, string> MetaData (api.body = "meta_data"),
 | 
						||
    9: required string ChatID (api.body = "chat_id")
 | 
						||
    10: optional string SectionID (api.body="section_id")
 | 
						||
    11: optional i64 CreatedAt (api.body = "created_at")
 | 
						||
    12: optional i64 UpdatedAt (api.body = "updated_at")
 | 
						||
    13: optional string ReasoningContent (api.body = "reasoning_content")
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
struct EnterMessage  {
 | 
						||
    1: string Role (api.body = "role"), // user / assistant
 | 
						||
    2: string Content (api.body = "content"), // 如果是非 text,需要解析 JSON
 | 
						||
    3: map<string,string> MetaData (api.body = "meta_data"),
 | 
						||
    4: string ContentType (api.body = "content_type"), // text, card, object_string
 | 
						||
    5: optional string Type (api.body = "type")
 | 
						||
    6: optional string Name (api.body = "name")
 | 
						||
}
 | 
						||
 | 
						||
struct LastError {
 | 
						||
    1: required i32 Code (api.body = "code"),
 | 
						||
    2: required string Msg (api.body = "msg"),
 | 
						||
}
 | 
						||
 | 
						||
struct Usage {
 | 
						||
    1: optional i32 TokenCount (api.body = "token_count"),
 | 
						||
    2: optional i32 OutputTokens (api.body = "output_count"),
 | 
						||
    3: optional i32 InputTokens (api.body = "input_count"),
 | 
						||
}
 | 
						||
 | 
						||
struct RequiredAction {
 | 
						||
    1: string Type (api.body = "type"),
 | 
						||
    2: SubmitToolOutputs SubmitToolOutputs (api.body = "submit_tool_outputs")
 | 
						||
}
 | 
						||
 | 
						||
struct SubmitToolOutputs {
 | 
						||
    1: list<InterruptPlugin> ToolCalls (api.body = "tool_calls")
 | 
						||
}
 | 
						||
 | 
						||
struct InterruptPlugin {
 | 
						||
    1: string id
 | 
						||
    2: string type
 | 
						||
    3: InterruptFunction function
 | 
						||
    4: InterruptRequireInfo require_info
 | 
						||
}
 | 
						||
 | 
						||
struct InterruptFunction {
 | 
						||
    1: string name
 | 
						||
    2: string arguments
 | 
						||
}
 | 
						||
 | 
						||
struct InterruptRequireInfo {
 | 
						||
    1: list<string> infos
 | 
						||
}
 | 
						||
 | 
						||
struct ChatV3ChatDetail {
 | 
						||
    1: required i64 ID (api.body = "id",api.js_conv='true'),
 | 
						||
    2: required i64 ConversationID (api.body = "conversation_id",api.js_conv='true'),
 | 
						||
    3: required i64 BotID (api.body = "bot_id",api.js_conv='true'),
 | 
						||
    4: optional i32 CreatedAt (api.body = "created_at"),
 | 
						||
    5: optional i32 CompletedAt (api.body = "completed_at"),
 | 
						||
    6: optional i32 FailedAt (api.body = "failed_at"),
 | 
						||
    7: optional map<string, string> MetaData (api.body = "meta_data"),
 | 
						||
    8: optional LastError LastError (api.body = "last_error"),
 | 
						||
    9: required string Status (api.body = "status"),
 | 
						||
    10: optional Usage Usage (api.body = "usage"),
 | 
						||
    11: optional RequiredAction RequiredAction (api.body = "required_action")
 | 
						||
    12: optional i64 SectionID (api.body="section_id",api.js_conv='true')
 | 
						||
}
 | 
						||
 | 
						||
 | 
						||
// no stream
 | 
						||
struct ChatV3Response {
 | 
						||
    1: optional ChatV3ChatDetail ChatDetail (api.body = "data"),
 | 
						||
    2: required i32 Code (api.body = "code"),
 | 
						||
    3: required string Msg (api.body = "msg")
 | 
						||
} |