session.api 9.0 KB
syntax = "v1"

// 后台接口
@server(
    prefix: v1
    group: chat
    middleware: LogRequest
    jwt: SystemAuth
)
service Core {
    @doc  "聊天会话-详情"
    @handler chatSessionGet
    get /chat/session/:id (ChatSessionGetRequest) returns (ChatSessionGetResponse)
    @doc  "聊天会话-保存"
    @handler chatSessionSave
    post /chat/session (ChatSessionSaveRequest) returns (ChatSessionSaveResponse)
    @doc  "聊天会话-删除"
    @handler chatSessionDelete
    delete /chat/session/:id (ChatSessionDeleteRequest) returns (ChatSessionDeleteResponse)
    @doc  "聊天会话-更新"
    @handler chatSessionUpdate
    put /chat/session/:id (ChatSessionUpdateRequest) returns (ChatSessionUpdateResponse)
    @doc  "聊天会话-重命名"
    @handler chatSessionRename
    post /chat/session/rename (ChatSessionRenameRequest) returns (ChatSessionRenameResponse)
    @doc  "聊天会话-搜索"
    @handler chatSessionSearch
    post /chat/session/search (ChatSessionSearchRequest) returns (ChatSessionSearchResponse)
    @doc  "聊天会话-对话"
    @handler chatSessionConversation
    post /chat/session/conversation (ChatSessionConversationRequest) returns (ChatSessionConversationResponse)
    @doc  "聊天会话-对话"
    @handler chatSessionConversationWs
    get /chat/session/conversation (ChatSessionConversationRequestWs) returns (ChatSessionConversationResponse)

    @doc  "聊天会话-添加文件"
    @handler chatSessionAddFiles
    post /chat/session/add_files (ChatSessionAddFilesRequest) returns (ChatSessionAddFilesResponse)
    @doc  "聊天会话-移除文件"
    @handler chatSessionRemoveFiles
    post /chat/session/remove_files (ChatSessionAddFilesRequest) returns (ChatSessionAddFilesResponse)

    @doc  "星火聊天会话-我的会话"
    @handler chatMySparkSessions
    post /chat/session/my_spark_sessions (ChatSessionSearchRequest) returns (ChatSessionSearchResponse)
    @doc  "星火聊天会话-保存"
    @handler chatSparkSessionSave
    post /chat/spark_session (ChatSessionSaveRequest) returns (ChatSessionSaveResponse)

    @doc  "聊天会话-对话记录列表"
    @handler chatSessionRecords
    post /chat/session/records (ChatSessionRecordsRequest) returns (ChatSessionRecordsResponse)

    @doc  "模型列表"
    @handler chatModels
    get /chat/models (ChatModelsRequest) returns (ChatModelsResponse)
}


// 数据管理后台接口
@server(
    prefix: v1
    group: chat
    middleware: LogRequest
    jwt: SystemAuth
)
service Core {
    @doc  "数据管理-会话搜索"
    @handler chatDataSessionSearch
    post /chat/data/session/search (ChatDataSessionSearchRequest) returns (ChatDataSessionSearchResponse)
    @doc  "聊天会话-详情"
    @handler chatDataSessionGet
    get /chat/data/session/:id (ChatSessionGetRequest) returns (ChatSessionGetResponse)
}

type (
    ChatSessionGetRequest {
        Id int64 `path:"id"`
    }
    ChatSessionGetResponse {
        ChatSession ChatSessionItem    `json:"session"`
        Records     []Record           `json:"records"`
        Documents   []ChatDocumentItem `json:"documents"`
        Dataset     *ChatDatasetItem    `json:"dataset"`
    }

    ChatSessionSaveRequest {
        ChatSession ChatSessionItem `json:"session"`
    }
    ChatSessionSaveResponse {
        ChatSession ChatSessionItem `json:"session"`
    }

    ChatSessionDeleteRequest {
        Id int64 `path:"id"`
    }
    ChatSessionDeleteResponse {}

    ChatSessionUpdateRequest {
        Id int64 `path:"id"`
        ChatSession ChatSessionItem `json:"session"`
    }
    ChatSessionUpdateResponse {}

    ChatSessionSearchRequest {
        Page  int     `json:"page,optional"`
        Size  int     `json:"size,optional"`
        Title string  `json:"title,optional"`  // 按标题搜索
        Module int    `json:"module,optional"` // 模块 1:openai chat  2:星火文档问答
    }
    ChatSessionSearchResponse{
        List  []ChatSessionItem  `json:"list"`
        Total int64              `json:"total"`
    }
    ChatSessionItem {
        Id        int64  `json:"id,optional,omitempty"`        // 唯一标识
        Title     string `json:"title,optional,omitempty"`     // 会话标题
        Abstract  string `json:"abstract,optional,omitempty"`  // 摘要
        CreatedAt int64  `json:"createdAt,optional,omitempty"` // 创建时间

        Module     int      `json:"module,optional,omitempty,default=1"`    // 1:openai chat  2:星火文档问答
        Type        string  `json:"type,optional,omitempty,default=chat"` // 类型 chat:普通问答 spark_dataset_chat:星火知识库问答 spark_documents_chat:星火多文档问答
        DatasetId   int64   `json:"datasetId,optional,omitempty"` // 知识库
        DocumentIds []int64 `json:"documentIds,optional,omitempty"` // 多文档
        Documents   []ChatDocumentItem `json:"documents,optional,omitempty"` // 多文档
        Author       *User   `json:"author,optional,omitempty"`        // 提问人
        TotalRecords int64   `json:"totalRecords,optional,omitempty"`  // 记录数
        Model       *Model   `json:"model,optional,omitempty"`        // 模型
    }
)

type (
    ChatSessionRenameRequest{
        Id     int64  `json:"id"`    // 模型ID
        Name   string `json:"name"`  // 模型名称
    }
    ChatSessionRenameResponse{

    }
)

// 模型列表
type(
    ChatModelsRequest{

    }
    ChatModelsResponse{
        List  []Model  `json:"list"`
    }
    Model{
        Id     int64  `json:"id"`    // 模型ID
        Name   string `json:"name"`  // 模型名称
        Code   string `json:"code"`  // 模型编码
        Logo   string `json:"logo"`  // 模型LOGO地址
    }
)

// 聊天会话-记录列表
type(
    ChatSessionRecordsRequest{
        Page        int   `json:"page,optional"`
        Size        int   `json:"size,optional"`
        SessionId   int64 `json:"sessionId"`
    }
    ChatSessionRecordsResponse{
        Records     []Record        `json:"list"`
        Total       int64           `json:"total"`
    }
)

// 聊天会话-对话
type(
    ChatSessionConversationRequest{
        SessionId   int64 `json:"sessionId"`    // 会话ID
        ModelId     int64  `json:"modelId"`     // 模型ID
        ContentType string `json:"contentType"` // 内容类型 文本:text (图片:image 文档:document)
        Text        string `json:"text"`        // 内容文本
        FileUrl     string `json:"fileUrl,optional"`     // 文件地址
    }
    ChatSessionConversationResponse{
        Record     *Record        `json:"record,omitempty"`
        Parts      []string      `json:"parts"`
        Finished   bool          `json:"finished"`
    }
    ChatSessionConversationRequestWs{
        SessionId   int64 `form:"sessionId"`    // 会话ID
        ModelId     int64  `form:"modelId"`     // 模型ID
        ContentType string `form:"contentType"` // 内容类型 文本:text (图片:image 文档:document)
        Text        string `form:"text,optional"`        // 内容文本
    }
    Record{
        Id          int64   `json:"id"`           // 记录ID
        SessionId   int64   `json:"sessionId"`    // 会话ID
        GroupId     int64   `json:"groupId"`      // 分组ID
        ModelId     int64   `json:"modelId,omitempty"`      // 模型ID
        AuthorId    int64   `json:"authorId,omitempty"`        // 作者ID
        Author      *User          `json:"author,omitempty"`   // 提问人
        Model       *Model   `json:"model,omitempty"`   // 模型
        ContentType string  `json:"contentType"`  // 内容类型 文本:text (图片:image 文档:document)
        ProblemText string  `json:"problemText"`  // 问题文本
        AnswerText  string  `json:"answerText"`   // 回答文本
        Status      string  `json:"status"`       // 状态 处理中:processing 超时:finished_timeout 结束成功:finished_fail 结束失败:finished_success
        CreateAt    int64   `json:"createAt"`     // 创建时间
    }
    Content{
        ContentType string   `json:"contentType"` // 内容类型 文本:text (图片:image 文档:document)
        Parts       []string `json:"parts"`       // 内容
    }
    User {
        Id       int64  `json:"id"`     // 用ID
        Name     string `json:"name"`   // 名称
        Avatar   string `json:"avatar"` // 头像
    }
)

// 会话添加新文档
type(
    ChatSessionAddFilesRequest{
        Id   int64  `json:"id"`   // 文档ID
        DocumentIds []int64  `json:"documentIds"` // 文档ID列表
    }
    ChatSessionAddFilesResponse{

    }
)

// 数据管理-会话搜索
type(
    ChatDataSessionSearchRequest{
        Page  int     `json:"page,optional"`
        Size  int     `json:"size,optional"`
        Title string  `json:"title,optional"`      // 按标题搜索
        UserName string `json:"userName,optional"` // 用户名称
        BeginTime int64 `json:"beginTime,optional"`// 会话创建时间
        EndTime   int64 `json:"endTime,optional"`  // 会话创建时间
    }
    ChatDataSessionSearchResponse{
        List  []ChatSessionItem  `json:"list"`
        Total int64              `json:"total"`
    }
)