8000 refactor!: 移除 sdk.ModelType,EmbeddingModel 补充元数据 by sheepbox8646 · Pull Request #117 · felinics/twilight · GitHub
[go: up one dir, main page]

Skip to content

refactor!: 移除 sdk.ModelType,EmbeddingModel 补充元数据 - #117

Merged
sheepbox8646 merged 1 commit into
mainfrom
refactor/twi-8-remove-model-type
Oct 13, 2026
Merged

sheepbox8646 merged 1 commit into
mainfrom
refactor/twi-8-remove-model-type

Conversation

@sheepbox8646
Copy link
Copy Markdown
Member

概要

去掉 sdk.ModelType,让对话模型和 embedding 模型各自用自己的类型表示:

  • 删除 sdk.ModelType 与 Model.Type。ModelType 原来只有 chat、embedding 两个值,唯一的用途是让 Google 对话 provider 的 ListModels 混着返回 embedding 模型并打标。现在 sdk.Model 只表示对话模型。
  • EmbeddingModel 补充元数据:显示名、描述、默认维度、输入上限,与 MaxEmbeddingsPerCall 一样都是可选字段,零值表示未声明。调用方式不变,仍是 sdk.Embed、sdk.EmbedMany、Client.Embed、Client.EmbedMany 加 WithEmbeddingModel,与语音、转写、图片、视频一致。
  • Google 模型列表拆分:对话 provider 的 ListModels 不再包含只支持 embedContent 的模型。Google embedding provider 新增 ListModels,列出支持 embedContent 的模型,并填上显示名、描述和输入上限,原有的列举能力不丢。
  • 各 provider 构造 sdk.Model 时去掉 Type 字段;文档同步更新,并去掉 Model 文档里早已不存在的 MaxTokens 字段。

本 PR 从 #116 拆出,两者都从 main 分出、互不依赖。sdk/model.go 和文档里有相邻改动,后合并的一个需要变基。

破坏性变更与迁移

sdk.ModelType、sdk.ModelTypeChat、sdk.ModelTypeEmbedding 与 Model.Type 已删除:

  • 构造 sdk.Model 时去掉 Type 字段。
  • 依赖 Google 对话 ListModels 里 Type == embedding 找 embedding 模型的代码,改为调用 provider/google/embedding 的 ListModels。

Memoh 需要迁移的是 internal/providers/service.go 中按 sdk.ModelType 区分模型的逻辑,以及 internal/models/opencode_go.go 构造模型时的 Type 字段。embedding 调用代码不受影响。

关联

验证

  • 单测:Google 对话 ListModels 不再包含 embedding 模型;Google embedding ListModels 只返回支持 embedContent 的模型,填上显示名、描述、输入上限和单次条数,并绑定到该 provider。embedding 调用代码与原有测试未改动。
  • 本地按 CI 流程跑过:go build ./...、go vet ./...、go vet -tags integration ./...、golangci-lint run ./...(0 issues)、go test ./... -short -race、internal/sdkdiff 测试、go mod tidy 无变化。
  • 未做真实接口验证:本机没有 Google 的 API 密钥,ListModels 只用模拟服务验证。

🤖 Generated with Claude Code

- 删除 sdk.ModelType 与 Model.Type,sdk.Model 只表示对话模型
- EmbeddingModel 补充显示名、描述、默认维度、输入上限,调用方式不变
- Google 对话 ListModels 不再混入 embedding 模型;Google embedding
  provider 新增 ListModels 列出支持 embedContent 的模型
- 文档同步,并去掉 Model 文档里早已不存在的 MaxTokens 字段

BREAKING CHANGE: sdk.ModelType 与 Model.Type 已删除。按 Type 区分 embedding
模型的代码,改为调用 provider/google/embedding 的 ListModels。

Linear: TWI-8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sheepbox8646
sheepbox8646 merged commit 2fb5a43 into main Oct 13, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

0