WingWell.Util.Volcengine 8.0.0
WingWell.Util.Volcengine
火山引擎知识库(VikingDB)API 封装。
配置项
{
"Encrypt": "<AES 密钥>",
"WingWell.Util.Volcengine": {
"AccessKeyId": "<AK 明文>",
"AccessKeySecret": "<SK 经 AES 加密后的密文>"
}
}
AccessKeySecret 由 AesHelper 使用 Encrypt 字段的密钥解密后使用。
结构
| 文件 | 说明 |
|---|---|
VolcengineClient.cs |
HTTP 客户端,封装 V4 签名鉴权、POST 和 SSE 流式请求 |
VikingKnowledgeProvider.cs |
知识库业务接口封装 |
Internals/VolcSignerV4.cs |
HMAC-SHA256 签名器 |
Internals/ConfigEnvironment.cs |
AK/SK 配置读取 |
Internals/VikingFailedCodeHelper.cs |
错误码辅助方法 |
Enums/VikingDocProcessStatus.cs |
文档处理状态枚举 |
Enums/VikingChatStreamPhase.cs |
流式对话阶段枚举 |
Models/VikingDocInfo.cs |
文档详情模型(doc/info 返回值,含摘要、token、url) |
Models/VikingDocItem.cs |
文档状态模型(doc/list 返回值,无摘要和 token) |
Models/VikingDocChunk.cs |
切片内容模型(point/list 返回值) |
Models/VikingChatMessage.cs |
对话消息模型(role + content) |
Models/VikingChatStreamChunk.cs |
流式对话单帧模型 |
Models/VikingChatEvidence.cs |
对话引用来源模型 |
Models/VikingChatTokenUsage.cs |
Token 用量统计模型 |
VikingKnowledgeProvider 已实现接口
| 方法 | 火山 API | 说明 |
|---|---|---|
UploadDocAsync |
POST /api/knowledge/doc/v2/add |
上传文档(带 tag_list) |
UpdateDocMetaAsync |
POST /api/knowledge/doc/update_meta |
更新文档标签(不触发重新切片) |
GetDocInfoAsync |
POST /api/knowledge/doc/info |
查询单个文档详情(返回完整摘要、total_tokens、url、statistics) |
GetDocStatusAsync |
POST /api/knowledge/doc/list |
按 doc_id 批量查询文档状态(每次最多 100 个) |
GetAllDocStatusAsync |
POST /api/knowledge/doc/list |
分页列举全部文档状态 |
GetDocPageAsync |
POST /api/knowledge/doc/list |
单页分页查询 |
DeleteDocAsync |
POST /api/knowledge/doc/delete |
删除文档(支持单个和批量) |
GetDocChunksAsync |
POST /api/knowledge/point/list |
分页查询切片内容 |
ChatStreamAsync |
POST /api/knowledge/service/chat |
知识库问答(SSE 流式,支持 doc_filter 按 wiki 过滤) |
doc/info 与 doc/list 差异
两个接口返回的 JSON 结构不同,使用独立的解析方法:
| 字段 | doc/info | doc/list(当前封装未传 detailed) |
|---|---|---|
| 时间戳 | 毫秒级 | 秒级 |
total_tokens |
有值 | 无此字段 |
doc_summary / brief_summary |
有内容 | 空字符串 |
url |
有 | 有 |
meta / statistics |
有 | 有 |
业务刷新策略(VolcanoDocHelper):
- 单个文档 → 直接调
GetDocInfoAsync获取完整信息 - 多个文档 → 先批量调
GetDocStatusAsync(每批 100 个)更新状态,再对缺少TotalTokens的文档补刷GetDocInfoAsync
注意事项
doc/v2/add对已存在的 doc_id 会报重复错误(1001002),不能用于更新标签- 标签更新应使用
doc/update_meta,但该接口是文档级全量替换,未传入的 meta 字段会被清空,调用时必须一次性推送全部标签 - 官方 API 文档:
/Users/tom/Library/Mobile Documents/iCloud~md~obsidian/Documents/Master/09 - 官方文档/火山向量知识库/2、API参考/
No packages depend on WingWell.Util.Volcengine.
.NET 8.0
- WingWell.Util.Extensions (>= 8.0.0) : WingWell
| Version | Downloads | Last updated |
|---|---|---|
| 8.0.0 | 0 | 05/13/2026 |