Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ The architecture is designed for simple deployment, efficient static delivery, a
| Area | Capabilities |
| --- | --- |
| Conversations | Multi-branch chat, streaming, retries, edits, feedback, sharing, cloned shared conversations, rich markdown rendering, file cards, model metadata, usage details, and execution traces. |
| Media generation | Dedicated image generation and image edit flow with task-aware routing, OpenAI Images-compatible protocols, generated file storage, preview, download, and run history separated from text chat. |
| Media generation | Dedicated image generation and image edit flow with task-aware routing, provider-native OpenAI, Google, and xAI image protocols, generated file storage, preview, download, and run history separated from text chat. |
| Model control plane | Platform model catalog, upstream channels, real upstream models, route bindings, priority and weight routing, model capability JSON, display ordering, vendor mapping, automatic icons, and circuit breaker state. |
| Provider protocols | OpenAI Responses and Chat Completions, OpenAI Images, Anthropic Messages, Google/Gemini Generate Content, xAI Responses, OpenRouter defaults, and custom OpenAI-compatible routes. |
| Provider protocols | OpenAI Responses, Chat Completions, Images Generations, and Images Edits; Anthropic Messages; Google/Gemini Generate Content and Image Generation; xAI Responses, Images Generations, and Images Edits; OpenRouter defaults; and custom OpenAI-compatible routes. |
| Request governance | Protocol-aware request assembly, user option allowlists and denylists, system-protected fields, previous-response continuation where supported, and context snapshots for review. |
| Files and RAG | File upload, preview, download, deletion, quota control, MIME detection, text extraction, OCR, full-context injection, image context, chunking, embeddings, and semantic retrieval. |
| Memory and context | Message-window truncation, token-budget truncation, context compression, conversation memory, long-term user memory, RAG evidence records, and prompt trace inspection. |
Expand Down
4 changes: 2 additions & 2 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,9 +34,9 @@ DEEIX Chat 为团队提供统一的 AI 工作台,用一个清晰的使用入
| 模块 | 能力 |
| --- | --- |
| 对话体验 | 多分支会话、流式响应、重试、编辑、反馈、公开分享、克隆分享会话、富文本 Markdown、文件卡片、模型元信息、用量明细和执行链路。 |
| 媒体生成 | 独立的图片生成和图片编辑链路,按任务类型路由到 OpenAI Images 兼容协议,生成结果统一入库为文件,支持预览、下载和独立运行记录。 |
| 媒体生成 | 独立的图片生成和图片编辑链路,按任务类型路由到 OpenAI、Google 和 xAI 的原生图片协议,生成结果统一入库为文件,支持预览、下载和独立运行记录。 |
| 模型控制面 | 平台模型目录、上游渠道、真实上游模型、路由绑定、优先级/权重路由、能力 JSON、展示顺序、厂商映射、自动图标和熔断状态。 |
| 协议适配 | OpenAI ResponsesChat Completions、OpenAI ImagesAnthropic MessagesGoogle/Gemini Generate ContentxAI Responses、OpenRouter 默认协议和自定义 OpenAI 兼容路由。 |
| 协议适配 | OpenAI ResponsesChat Completions、Images Generations 和 Images Edits,Anthropic MessagesGoogle/Gemini Generate Content 和 Image Generation,xAI Responses、Images Generations 和 Images Edits,OpenRouter 默认协议和自定义 OpenAI 兼容路由。 |
| 请求治理 | 按协议组装上游请求,支持用户参数白名单/黑名单、系统保护字段、协议支持时的 previous response 续接,以及可回看的上下文快照。 |
| 文件与 RAG | 文件上传、预览、下载、删除、配额控制、MIME 探测、文本提取、OCR、全文上下文注入、图片上下文、分片、向量嵌入和语义检索。 |
| 记忆与上下文 | 消息数截断、Token 预算截断、上下文压缩、会话记忆、用户长期记忆、RAG 证据记录和提示词链路查看。 |
Expand Down
2 changes: 1 addition & 1 deletion backend/cmd/server/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import (
)

// @title DEEIX Chat API
// @version 0.1.0
// @version 0.1.1
// @description DEEIX Chat 后端 API 文档
// @BasePath /api/v1
// @securityDefinitions.apikey BearerAuth
Expand Down
26 changes: 25 additions & 1 deletion backend/docs/docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -9049,6 +9049,12 @@ const docTemplate = `{
"type": "string",
"maxLength": 64
},
"protocols": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
Expand All @@ -9075,12 +9081,24 @@ const docTemplate = `{
"createdRoute": {
"type": "boolean"
},
"createdRoutes": {
"type": "integer"
},
"error": {
"type": "string"
},
"existingRoutes": {
"type": "integer"
},
"platformModelName": {
"type": "string"
},
"protocols": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
Expand Down Expand Up @@ -9908,6 +9926,12 @@ const docTemplate = `{
"suggestedProtocol": {
"type": "string"
},
"suggestedProtocols": {
"type": "array",
"items": {
"type": "string"
}
},
"upstreamModelName": {
"type": "string"
},
Expand Down Expand Up @@ -11647,7 +11671,7 @@ const docTemplate = `{

// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "0.1.0",
Version: "0.1.1",
Host: "",
BasePath: "/api/v1",
Schemes: []string{},
Expand Down
26 changes: 25 additions & 1 deletion backend/docs/swagger.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"description": "DEEIX Chat 后端 API 文档",
"title": "DEEIX Chat API",
"contact": {},
"version": "0.1.0"
"version": "0.1.1"
},
"basePath": "/api/v1",
"paths": {
Expand Down Expand Up @@ -9042,6 +9042,12 @@
"type": "string",
"maxLength": 64
},
"protocols": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string",
"enum": [
Expand All @@ -9068,12 +9074,24 @@
"createdRoute": {
"type": "boolean"
},
"createdRoutes": {
"type": "integer"
},
"error": {
"type": "string"
},
"existingRoutes": {
"type": "integer"
},
"platformModelName": {
"type": "string"
},
"protocols": {
"type": "array",
"items": {
"type": "string"
}
},
"status": {
"type": "string"
},
Expand Down Expand Up @@ -9901,6 +9919,12 @@
"suggestedProtocol": {
"type": "string"
},
"suggestedProtocols": {
"type": "array",
"items": {
"type": "string"
}
},
"upstreamModelName": {
"type": "string"
},
Expand Down
18 changes: 17 additions & 1 deletion backend/docs/swagger.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -1649,6 +1649,10 @@ definitions:
protocol:
maxLength: 64
type: string
protocols:
items:
type: string
type: array
status:
enum:
- active
Expand All @@ -1670,10 +1674,18 @@ definitions:
type: boolean
createdRoute:
type: boolean
createdRoutes:
type: integer
error:
type: string
existingRoutes:
type: integer
platformModelName:
type: string
protocols:
items:
type: string
type: array
status:
type: string
upstreamModelName:
Expand Down Expand Up @@ -2226,6 +2238,10 @@ definitions:
type: string
suggestedProtocol:
type: string
suggestedProtocols:
items:
type: string
type: array
upstreamModelName:
type: string
upstreamModelStatus:
Expand Down Expand Up @@ -3371,7 +3387,7 @@ info:
contact: {}
description: DEEIX Chat 后端 API 文档
title: DEEIX Chat API
version: 0.1.0
version: 0.1.1
paths:
/admin/audit-logs:
get:
Expand Down
4 changes: 4 additions & 0 deletions backend/internal/application/channel/dto.go
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ type UpstreamRemoteModelView struct {
SuggestedPlatformModelName string
SuggestedKindsJSON string
SuggestedProtocol string
SuggestedProtocols []string
BindingCode string
BoundPlatformModels []string
UpstreamModelStatus string
Expand Down Expand Up @@ -85,6 +86,9 @@ type ImportUpstreamModelResultView struct {
BindingCode string
Status string
CreatedRoute bool
CreatedRoutes int
ExistingRoutes int
Protocols []string
CreatedPlatform bool
Error string
}
Expand Down
2 changes: 2 additions & 0 deletions backend/internal/application/channel/errs.go
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,8 @@ var (
ErrInvalidModelOrder = errors.New("invalid model order")
// ErrProtocolRequired 无法通过瀑布规则推断协议。
ErrProtocolRequired = errors.New("protocol required")
// ErrInvalidRouteProtocolCombination 路由协议组合无效。
ErrInvalidRouteProtocolCombination = errors.New("invalid route protocol combination")
// ErrUpstreamModelNotFound 上游模型路由绑定不存在。
ErrUpstreamModelNotFound = repository.ErrUpstreamModelNotFound
// ErrUpstreamModelConflict 上游模型路由绑定冲突。
Expand Down
1 change: 1 addition & 0 deletions backend/internal/application/channel/input.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ type ImportUpstreamModelItemInput struct {
PlatformModelName string
UpstreamModelName string
Protocol string
Protocols []string
KindsJSON string
Status string
Priority int
Expand Down
Loading
Loading