opencode如何让第三方提供商的模型支持多模态

问题: 众所周知,opencode存在以下问题: 为了说清楚我介绍两种场景。 1 openai未登录认证的情况下 此时,模型列表没有openai的模型,假设我配置了一个提供商叫openai-third这个是第三方提供商,只不过它的模型也有gpt相关模型,这些模型也支持多模态。 如果,我这时候在con...
opencode如何让第三方提供商的模型支持多模态
opencode如何让第三方提供商的模型支持多模态

问题:

众所周知,opencode存在以下问题:
为了说清楚我介绍两种场景。
1 openai未登录认证的情况下
此时,模型列表没有openai的模型,假设我配置了一个提供商叫openai-third这个是第三方提供商,只不过它的模型也有gpt相关模型,这些模型也支持多模态。
如果,我这时候在config.json中配置的提供商key是openai-third这个名字,则这个提供商的所有模型都无法使用多模态,虽然模型本身是支持的。
但,如果我在config.json中配置的提供商的key是openai,即去掉-third后缀这个名字,则这个提供商的所有模型都支持多模态了。

2 openai已登录认证情况
此时,模型列表会显示一个openai的官方提供商模型列表,这些模型是支持多模态的。
此时,如果我仍旧在config.json中配置的提供商key是openai-third这个名字,则这个提供商的所有模型都无法使用多模态,虽然模型本身是支持的。此时模型列表会有两个提供商,即openai官方和openai-third,仅有openai官方的模型支持多模态。
再假设,我此时在confg.json中把openai-third提供商的名字改成openai,像情况1那样,然后再次重启opencode,你会发现openai-third这个提供商,即目前被改为openai的这个(本来是openai-third)提供商无法在模型列表中显示了。可能因为和官方的openai重名被覆盖了。

所以,这个软件无法同时让多个提供商支持多模态,仅能openai这个提供商的key才支持多模态。

且,现在一旦登录认证了openai官方账号,就仅能这个openai官方的模型支持多模态了,而且也无法通过配置里对key改名覆盖这个官方opeai的提供商了。这就导致我无法让openai官方以外的提供商的模型支持多模态了。

期望

我现在就想能否通过某种方式让openai官方的这个模型临时失效,让第三方的模型可以改成openaikey,从而让第三方模型临时支持多模态。当我需要使用openai官方的模型时再恢复openai官方的模型可用。
当然,最理想的情况还是同时让openai官方和第三方提供商的模型都支持多模态。

解决

最近打算研究opencode的源码,于是顺便让ai分析了这个问题,结果ai给出了完美的解决办法,那就是按已下示例配置即可。

{
  "$schema": "https://opencode.ai/config.json",
  "provider": {
    "openai-third": {
      "name": "OpenAI Third",
      "npm": "@ai-sdk/openai-compatible",
      "api": "https://api.example.com/v1",
      "options": {
        "apiKey": "sk-xxx"
      },
      "models": {
        "gpt-4o-mini": {
          "name": "GPT-4o Mini",
          "modalities": {
            "input": ["text", "image", "pdf"],
            "output": ["text"]
          }
        }
      }
    }
  }
}

关键点:“npm”: “@ai-sdk/openai-compatible” 和 modalities配置,注意,这两个key写的位置,别搞错了。

希望对有此需求的佬友有所帮助。

2 个帖子 - 2 位参与者

阅读完整话题

来源: LinuxDo 最新话题查看原文