ling-baseling-base

Provider 列表

40 个 channel 适配器、能力与初始化示例

在线 Playground

在浏览器中直接体验本页相关 API,无需本地安装 Go 环境。

Provider 列表

relay/channel 下每个子目录实现一个 AI provider,统一实现 common.Adaptor 接口,通过 relay.New(relay.WithProvider(...)) 接入。

Adaptor 请求流

Init → ConvertXxxRequest → GetRequestURL → SetupRequestHeader → DoRequest → DoResponse
type Adaptor interface {
    Init(info *RelayInfo)
    GetRequestURL(info *RelayInfo) (string, error)
    SetupRequestHeader(ctx, header, info) error
    ConvertOpenAIRequest(ctx, info, request) (any, error)
    ConvertClaudeRequest(ctx, info, request) (any, error)
    ConvertGeminiRequest(ctx, info, request) (any, error)
    ConvertImageRequest(ctx, info, request) (any, error)
    ConvertEmbeddingRequest(ctx, info, request) (any, error)
    ConvertAudioRequest(ctx, info, request) (io.Reader, error)
    ConvertRerankRequest(ctx, relayMode, request) (any, error)
    ConvertOpenAIResponsesRequest(ctx, info, request) (any, error)
    DoRequest(ctx, info, body) (*http.Response, error)
    DoResponse(ctx, resp, info, w) (usage any, err *types.NewAPIError)
    GetModelList() []string
    GetChannelName() string
}

全部 Channel(40)

Channel厂商/平台ChatStreamEmbedImageAudioRerank
openaiOpenAI / 兼容端点
claudeAnthropic
geminiGoogle Gemini
vertexGoogle Vertex
awsAWS Bedrock
azureAzure OpenAI
ollama本地 Ollama
deepseekDeepSeek
moonshotMoonshot/Kimi
zhipu智谱 AI
zhipu_4v智谱多模态
ali阿里云百炼
baidu百度文心
baidu_v2百度文心 v2
tencent腾讯混元
xunfei讯飞星火
volcengine火山引擎/豆包
minimaxMiniMax
cohereCohere
mistralMistral
perplexityPerplexity
openrouterOpenRouter 聚合
siliconflowSiliconFlow
huggingfaceHuggingFace
replicateReplicate
jinaJina AI
jimeng即梦
lingyiwanwu零一万物
mokaaiMokaAI
ai360360 智脑
xaixAI Grok
xinferenceXinference 自建
cloudflareCloudflare AI
coze扣子
difyDify
codexCodex
palmGoogle PaLM(旧)
sub2apiSub2API 代理
submodelSubModel
newapiNew API 网关
advancedcustom自定义适配视实现视实现视实现

能力因上游 API 变化可能更新,以各 channel 源码 Convert* 方法为准。

初始化示例

OpenAI / 兼容代理

import "github.com/LingByte/ling-base/relay/channel/openai"

p := openai.NewProvider("sk-xxx",
    openai.WithBaseURL("https://api.openai.com/v1"),
)
client := relay.New(relay.WithProvider(p))

Claude

import "github.com/LingByte/ling-base/relay/channel/claude"

client := relay.New(relay.WithProvider(claude.NewProvider("sk-ant-xxx")))

Gemini

import "github.com/LingByte/ling-base/relay/channel/gemini"

client := relay.New(relay.WithProvider(gemini.NewProvider(apiKey)))

国内云

import (
    "github.com/LingByte/ling-base/relay/channel/ali"
    "github.com/LingByte/ling-base/relay/channel/deepseek"
    "github.com/LingByte/ling-base/relay/channel/volcengine"
)

// 阿里云
relay.New(relay.WithProvider(ali.NewProvider(apiKey)))

// DeepSeek
relay.New(relay.WithProvider(deepseek.NewProvider("sk-...")))

// 火山引擎
relay.New(relay.WithProvider(volcengine.NewProvider(accessKey, secretKey)))

本地 Ollama

import "github.com/LingByte/ling-base/relay/channel/ollama"

relay.New(relay.WithProvider(ollama.NewProvider(
    ollama.WithBaseURL("http://127.0.0.1:11434"),
)))

聚合网关

import (
    "github.com/LingByte/ling-base/relay/channel/openrouter"
    "github.com/LingByte/ling-base/relay/channel/siliconflow"
)

relay.New(relay.WithProvider(openrouter.NewProvider(key)))
relay.New(relay.WithProvider(siliconflow.NewProvider(key)))

多 Provider 工厂

func newClient(cfg Config) *relay.Client {
    switch cfg.Provider {
    case "openai":
        return relay.New(relay.WithProvider(openai.NewProvider(cfg.Key)))
    case "claude":
        return relay.New(relay.WithProvider(claude.NewProvider(cfg.Key)))
    case "deepseek":
        return relay.New(relay.WithProvider(deepseek.NewProvider(cfg.Key)))
    default:
        panic("unknown provider: " + cfg.Provider)
    }
}

新增 Channel

  1. relay/channel/<name>/ 实现 common.Adaptor
  2. relay/constant/channel.go 注册 channel 类型
  3. 提供 NewProvider(apiKey, ...Option) 包装
  4. 编写单元测试(请求 URL 拼接、header 等)

详见 relay/channel/README.md

On this page