How can I connect to other AI model provider?

I would like to use CodeBot with other AI model providers like kimi k3/minixmax, these models are good enough for most of the tasks, and they are more affordable. The providers provide Anthropic/open AI compatitable URLs such as https://api.minimaxi.com/anthropic and https://api.minimaxi.com/v1 (open AI compaticable) so that people have their coding/token plan can use it in claude code/opencode, etc.

It looks like the current version Element settings do not support adding models through Anthropic/open AI compatitable URLs.

Would you consider adding the support? Thank you.

Right now, CodeBot for Delphi only supports our own CodeBot Server with the AI credits included in the subscription.

In the back, we currently use OpenAI, but that should be considered an implementation detail and is subject to change. The main point is: CodeBot for Delphi is not “bring your own AI”; it’s an end-to-end solution that comes with the AI credits you need.

I think here was a question referring to a different CodeBot, the one that comes with Water or Fire, looking at the topic category :slightly_smiling_face:

Oh, yes, my apologies. So deep into the CBD launch that I missed this. i will look at adding support for https://api.minimaxi.com for CodeBot/Elements, @xiaoguang.

Hi mh, yes, I mean the one in water/fire. I know it already support US AI providers like OpenAI/Anthropic/Gemi, and also allows talking to models running locally like LM studio, but I would like to use, for example Kimi K3/Minimax/Deepseek v4 as they are good enough and more affordable, and my computer is not that powerful to run these models locally.

So ideally, it would be awsome if the codebot in water/fire allow using openAI compatible address so that I can use any AI provider.

Thank you.

Gotcha, yes. I will look at adding these; possibly for Friday. What do you think will be more useful: dedicated account types for them or allowing them to override the URL for standard account types such as OpenAI or Anthropic?

I think it would be best if we could just copy the configuration example json from the token plan provider and it just work.

Example for Claude code, which use ANTHROPIC_BASE_URL:

{

"env": {

    "ANTHROPIC_AUTH_TOKEN": "<ARK_API_KEY>",

    "ANTHROPIC_BASE_URL": "https://ark.cn-beijing.volces.com/api/plan",

    "ANTHROPIC_MODEL": "<MODEL_NAME>",

    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "<MODEL_NAME>",

    "ANTHROPIC_DEFAULT_SONNET_MODEL": "<MODEL_NAME>",

    "ANTHROPIC_DEFAULT_OPUS_MODEL": "<MODEL_NAME>",

    "CLAUDE_CODE_SUBAGENT_MODEL": "<MODEL_NAME>"

}

}

Opencode, which use openai compatible URL:

{

“$schema”: “https://opencode.ai/config.json”,

“model”: “volcengine-agent-plan/ark-code-latest”,

“provider”: {

"volcengine-agent-plan": {

  "npm": "@ai-sdk/openai",

  "name": "Volcano Engine(Responses API)",

  "options": {

    "baseURL": "https://ark.cn-beijing.volces.com/api/plan/v3",

    "apiKey": "<ARK_API_KEY>"

  },

  "models": {

    "ark-code-latest": {

      "name": "ark-code-latest",

      "limit": {

        "context": 256000,

        "output": 32000

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "doubao-seed-2.1-turbo": {

      "name": "doubao-seed-2.1-turbo",

      "limit": {

        "context": 256000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "doubao-seed-evolving": {

      "name": "doubao-seed-evolving",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "glm-5.2": {

      "name": "glm-5.2",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "glm-latest": {

      "name": "glm-latest",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "deepseek-v4-flash": {

      "name": "deepseek-v4-flash",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "deepseek-v4-pro": {

      "name": "deepseek-v4-pro",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "doubao-seed-2.0-lite": {

      "name": "doubao-seed-2.0-lite",

      "limit": {

        "context": 256000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "doubao-seed-2.0-mini": {

      "name": "doubao-seed-2.0-mini",

      "limit": {

        "context": 256000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "minimax-m2.7": {

      "name": "minimax-m2.7",

      "limit": {

        "context": 200000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "minimax-m3": {

      "name": "minimax-m3",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "kimi-k2.6": {

      "name": "kimi-k2.6",

      "limit": {

        "context": 256000,

        "output": 32000

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "kimi-k2.7-code": {

      "name": "kimi-k2.7-code",

      "limit": {

        "context": 256000,

        "output": 32000

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    },

    "kimi-k3": {

      "name": "kimi-k3",

      "limit": {

        "context": 1024000,

        "output": 65536

      },

      "modalities": {

        "input": \[

          "text",

          "image"

        \],

        "output": \[

          "text"

        \]

      }

    }

  }

}

}

}

So that we can just let CC swich to generate/switch the model providers/models, then let it generate the json, paste to Elements and it just works.