Update Vercel AI SDK to support tools call (#2383)
This commit is contained in:
@@ -1,145 +1,145 @@
|
||||
import { LanguageModelV1, ProviderV1 } from '@ai-sdk/provider'
|
||||
import { withoutTrailingSlash } from '@ai-sdk/provider-utils'
|
||||
|
||||
import { Mem0ChatLanguageModel } from './mem0-chat-language-model'
|
||||
import { Mem0ChatModelId, Mem0ChatSettings } from './mem0-chat-settings'
|
||||
import { OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||
import { Mem0CompletionModelId, Mem0CompletionSettings } from './mem0-completion-settings'
|
||||
import { Mem0GenericLanguageModel } from './mem0-generic-language-model'
|
||||
import { Mem0CompletionLanguageModel } from './mem0-completion-language-model'
|
||||
|
||||
import { LanguageModelV1, ProviderV1 } from "@ai-sdk/provider";
|
||||
import { loadApiKey, withoutTrailingSlash } from "@ai-sdk/provider-utils";
|
||||
import { Mem0ChatModelId, Mem0ChatSettings, Mem0Config } from "./mem0-types";
|
||||
import { OpenAIProviderSettings } from "@ai-sdk/openai";
|
||||
import { Mem0GenericLanguageModel } from "./mem0-generic-language-model";
|
||||
import { OpenAIChatSettings } from "@ai-sdk/openai/internal";
|
||||
import { AnthropicMessagesSettings } from "@ai-sdk/anthropic/internal";
|
||||
import { AnthropicProviderSettings } from "@ai-sdk/anthropic";
|
||||
|
||||
export interface Mem0Provider extends ProviderV1 {
|
||||
(modelId: Mem0ChatModelId, settings?: Mem0ChatSettings): LanguageModelV1
|
||||
|
||||
chat(
|
||||
modelId: Mem0ChatModelId,
|
||||
settings?: Mem0ChatSettings,
|
||||
): LanguageModelV1
|
||||
(modelId: Mem0ChatModelId, settings?: Mem0ChatSettings): LanguageModelV1;
|
||||
|
||||
chat(modelId: Mem0ChatModelId, settings?: Mem0ChatSettings): LanguageModelV1;
|
||||
completion(modelId: Mem0ChatModelId, settings?: Mem0ChatSettings): LanguageModelV1;
|
||||
|
||||
languageModel(
|
||||
modelId: Mem0ChatModelId,
|
||||
settings?: Mem0ChatSettings,
|
||||
): LanguageModelV1
|
||||
|
||||
completion(
|
||||
modelId: Mem0CompletionModelId,
|
||||
settings?: Mem0CompletionSettings,
|
||||
): LanguageModelV1
|
||||
settings?: Mem0ChatSettings
|
||||
): LanguageModelV1;
|
||||
}
|
||||
|
||||
export interface Mem0ProviderSettings extends OpenAIProviderSettings {
|
||||
baseURL?: string
|
||||
export interface Mem0ProviderSettings
|
||||
extends OpenAIChatSettings,
|
||||
AnthropicMessagesSettings {
|
||||
baseURL?: string;
|
||||
/**
|
||||
* Custom fetch implementation. You can use it as a middleware to intercept
|
||||
* requests or to provide a custom fetch implementation for e.g. testing
|
||||
*/
|
||||
fetch?: typeof fetch
|
||||
fetch?: typeof fetch;
|
||||
/**
|
||||
* @internal
|
||||
*/
|
||||
generateId?: () => string
|
||||
generateId?: () => string;
|
||||
/**
|
||||
* Custom headers to include in the requests.
|
||||
*/
|
||||
headers?: Record<string, string>
|
||||
organization?: string;
|
||||
project?: string;
|
||||
headers?: Record<string, string>;
|
||||
name?: string;
|
||||
mem0ApiKey?: string;
|
||||
apiKey?: string;
|
||||
provider?: string;
|
||||
config?: OpenAIProviderSettings;
|
||||
modelType?: "completion" | "chat";
|
||||
mem0Config?: Mem0Config;
|
||||
|
||||
/**
|
||||
* The configuration for the provider.
|
||||
*/
|
||||
config?: OpenAIProviderSettings | AnthropicProviderSettings;
|
||||
}
|
||||
|
||||
export function createMem0(
|
||||
options: Mem0ProviderSettings = {
|
||||
provider: "openai",
|
||||
},
|
||||
}
|
||||
): Mem0Provider {
|
||||
const baseURL =
|
||||
withoutTrailingSlash(options.baseURL) ?? 'http://127.0.0.1:11434/api'
|
||||
|
||||
withoutTrailingSlash(options.baseURL) ?? "http://api.openai.com";
|
||||
const getHeaders = () => ({
|
||||
...options.headers,
|
||||
})
|
||||
});
|
||||
|
||||
const createGenericModel = (
|
||||
modelId: Mem0ChatModelId,
|
||||
settings: Mem0ChatSettings = {},
|
||||
settings: Mem0ChatSettings = {}
|
||||
) =>
|
||||
new Mem0GenericLanguageModel(modelId, settings, {
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders,
|
||||
provider: options.provider || "openai",
|
||||
organization: options.organization,
|
||||
project: options.project,
|
||||
name: options.name,
|
||||
mem0_api_key: options.mem0ApiKey,
|
||||
apiKey: options.apiKey,
|
||||
}, options.config)
|
||||
new Mem0GenericLanguageModel(
|
||||
modelId,
|
||||
settings,
|
||||
{
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders(),
|
||||
provider: options.provider || "openai",
|
||||
name: options.name,
|
||||
mem0ApiKey: options.mem0ApiKey,
|
||||
apiKey: options.apiKey,
|
||||
mem0Config: options.mem0Config,
|
||||
},
|
||||
options.config
|
||||
);
|
||||
|
||||
const createCompletionModel = (
|
||||
modelId: Mem0ChatModelId,
|
||||
settings: Mem0ChatSettings = {}
|
||||
) =>
|
||||
new Mem0GenericLanguageModel(
|
||||
modelId,
|
||||
settings,
|
||||
{
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders(),
|
||||
provider: options.provider || "openai",
|
||||
name: options.name,
|
||||
mem0ApiKey: options.mem0ApiKey,
|
||||
apiKey: options.apiKey,
|
||||
mem0Config: options.mem0Config,
|
||||
modelType: "completion",
|
||||
},
|
||||
options.config
|
||||
);
|
||||
|
||||
const createChatModel = (
|
||||
modelId: Mem0ChatModelId,
|
||||
settings: Mem0ChatSettings = {},
|
||||
settings: Mem0ChatSettings = {}
|
||||
) =>
|
||||
|
||||
new Mem0ChatLanguageModel(modelId, settings, {
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders,
|
||||
provider: options.provider || "openai",
|
||||
organization: options.organization,
|
||||
project: options.project,
|
||||
name: options.name,
|
||||
mem0_api_key: options.mem0ApiKey,
|
||||
apiKey: options.apiKey,
|
||||
}, options.config)
|
||||
|
||||
const createCompletionModel = (
|
||||
modelId: Mem0CompletionModelId,
|
||||
settings: Mem0CompletionSettings = {}
|
||||
) =>
|
||||
new Mem0CompletionLanguageModel(
|
||||
modelId,
|
||||
settings,
|
||||
{
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders,
|
||||
provider: options.provider || "openai",
|
||||
organization: options.organization,
|
||||
project: options.project,
|
||||
name: options.name,
|
||||
mem0_api_key: options.mem0ApiKey,
|
||||
apiKey: options.apiKey
|
||||
},
|
||||
options.config
|
||||
);
|
||||
new Mem0GenericLanguageModel(
|
||||
modelId,
|
||||
settings,
|
||||
{
|
||||
baseURL,
|
||||
fetch: options.fetch,
|
||||
headers: getHeaders(),
|
||||
provider: options.provider || "openai",
|
||||
name: options.name,
|
||||
mem0ApiKey: options.mem0ApiKey,
|
||||
apiKey: options.apiKey,
|
||||
mem0Config: options.mem0Config,
|
||||
modelType: "completion",
|
||||
},
|
||||
options.config
|
||||
);
|
||||
|
||||
const provider = function (
|
||||
modelId: Mem0ChatModelId,
|
||||
settings?: Mem0ChatSettings,
|
||||
settings: Mem0ChatSettings = {}
|
||||
) {
|
||||
if (new.target) {
|
||||
throw new Error(
|
||||
'The Mem0 model function cannot be called with the new keyword.',
|
||||
)
|
||||
"The Mem0 model function cannot be called with the new keyword."
|
||||
);
|
||||
}
|
||||
|
||||
return createGenericModel(modelId, settings)
|
||||
}
|
||||
|
||||
return createGenericModel(modelId, settings);
|
||||
};
|
||||
|
||||
provider.languageModel = createGenericModel;
|
||||
provider.completion = createCompletionModel;
|
||||
provider.chat = createChatModel;
|
||||
|
||||
provider.chat = createChatModel
|
||||
provider.completion = createCompletionModel
|
||||
provider.languageModel = createChatModel
|
||||
|
||||
return provider as unknown as Mem0Provider
|
||||
return provider as unknown as Mem0Provider;
|
||||
}
|
||||
|
||||
export const mem0 = createMem0()
|
||||
export const mem0 = createMem0();
|
||||
|
||||
Reference in New Issue
Block a user