session.api 5.7 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 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 chatSessionRecords
    post /chat/session/records (ChatSessionRecordsRequest) returns (ChatSessionRecordsResponse)

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

type (
    ChatSessionGetRequest {
        Id int64 `path:"id"`
    }
    ChatSessionGetResponse {
        ChatSession ChatSessionItem `json:"session"`
        Records     []Record        `json:"records"`
    }

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

    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"`  // 按标题搜索
    }
    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"` // 创建时间
    }
)

// 模型列表
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"`        // 内容文本
    }
    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"` // 头像
    }
)