@ antseed/ 提供者核心
用于构建Antseed供应商插件的共享基础设施. 处理 HTTP 中继,认证,令牌管理,以及模型验证,因此插件作者可以专注于提供者特定的逻辑.
安装
pnpm add @antseed/provider-core
同伴依赖 : @antseed/node >= 0.1.0
密钥导出
基础
执行 Provider 与内置的 HTTP 中继支持接口。 大多数提供者插件都使用此作为基础.
import { BaseProvider, StaticTokenProvider } from '@antseed/provider-core';
const provider = new BaseProvider({
name: 'my-provider',
services: ['model-a', 'model-b'],
pricing: { defaults: { inputUsdPerMillion: 10, cachedInputUsdPerMillion: 1, outputUsdPerMillion: 10 } },
serviceCategories: { 'model-a': ['coding'] },
relay: {
baseUrl: 'https://api.example.com',
authHeaderName: 'Authorization',
authHeaderValue: '',
tokenProvider: new StaticTokenProvider('Bearer sk-...'),
maxConcurrency: 10,
allowedServices: ['model-a', 'model-b'],
serviceRewriteMap: {
'model-a': 'together/model-a',
},
},
});
托肯供应商
StaticTokenProvider-- 将静态的 API 密钥包入, 且没有刷新逻辑 .OAuthTokenProvider-- 管理 OAuth 访问/ 重新刷新代号对并自动更新.createTokenProvider()- 根据认证类型创建右向提供者的工厂.
公用事业
swapAuthHeader()-- 在发出的请求上注入/替换认证信头.validateRequestService()- 验证请求机构model字段相对于允许列表.KNOWN_AUTH_HEADERS-- 标准认证头名( x- api- key, 授权等) .
Http 中继器
低水平的 HTTP 中继,带有货币控制,SSE 流支持,模型验证,以及可选的请求模式重写(serviceRewriteMap) (中文(简体) ). 内部使用 BaseProvider。 。 。 .
插件中的用法
import type { AntseedProviderPlugin } from '@antseed/node';
import { BaseProvider, StaticTokenProvider } from '@antseed/provider-core';
const plugin: AntseedProviderPlugin = {
name: 'my-provider',
displayName: 'My Provider',
version: '0.1.0',
type: 'provider',
description: 'My custom provider',
configSchema: [
{ key: 'API_KEY', label: 'API Key', type: 'secret', required: true, description: 'API key' },
],
createProvider(config) {
return new BaseProvider({
name: 'my-provider',
services: ['default-model'],
pricing: { defaults: { inputUsdPerMillion: 10, cachedInputUsdPerMillion: 1, outputUsdPerMillion: 10 } },
relay: {
baseUrl: 'https://api.example.com',
authHeaderName: 'Authorization',
authHeaderValue: '',
tokenProvider: new StaticTokenProvider(`Bearer ${config['API_KEY']}`),
maxConcurrency: 10,
allowedServices: ['default-model'],
},
});
},
};
export default plugin;