ernie-ai-provider
Version:
Community-built ERNIE AI Provider for Vercel AI SDK - Integrate Baidu's ERNIE models with Vercel's AI application framework
72 lines (71 loc) • 2.42 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.ErnieChatLanguageModel = exports.ernie = void 0;
exports.createErnie = createErnie;
const provider_utils_1 = require("@ai-sdk/provider-utils");
const ernie_chat_language_model_1 = require("./ernie-chat-language-model");
// 千帆API现在直接使用API Key进行认证,无需获取访问令牌
/**
* 创建 ERNIE 提供商实例
*
* @param options 提供商配置选项
* @returns ERNIE 提供商实例
*
* @example
* ```typescript
* import { createErnie } from 'ernie-ai-provider';
*
* const ernie = createErnie({
* apiKey: 'your-api-key',
* });
*
* const model = ernie('ernie-4.0-8k');
* ```
*/
function createErnie(options = {}) {
const apiKey = (0, provider_utils_1.loadApiKey)({
apiKey: options.apiKey,
environmentVariableName: 'QIANFAN_API_KEY',
description: 'ERNIE API Key',
});
const getHeaders = () => {
return {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
...options.headers,
};
};
const createModel = (modelId, settings = {}) => new ernie_chat_language_model_1.ErnieChatLanguageModel(modelId, settings, {
provider: 'ernie.chat',
baseURL: (0, provider_utils_1.withoutTrailingSlash)(options.baseURL) ?? 'https://qianfan.baidubce.com/v2',
headers: getHeaders,
fetch: options.fetch,
generateId: options.generateId ?? provider_utils_1.generateId,
});
const provider = function (modelId, settings) {
if (new.target) {
throw new Error('模型工厂函数不能使用 new 关键字调用。');
}
return createModel(modelId, settings);
};
provider.chat = createModel;
return provider;
}
/**
* 默认的 ERNIE 提供商实例
* 使用环境变量中的 API 密钥
*
* @example
* ```typescript
* import { ernie } from 'ernie-ai-provider';
* import { generateText } from 'ai';
*
* const { text } = await generateText({
* model: ernie('ernie-4.0-8k'),
* prompt: '你好,请介绍一下你自己',
* });
* ```
*/
exports.ernie = createErnie();
var ernie_chat_language_model_2 = require("./ernie-chat-language-model");
Object.defineProperty(exports, "ErnieChatLanguageModel", { enumerable: true, get: function () { return ernie_chat_language_model_2.ErnieChatLanguageModel; } });