@nyrra/foundry-ai
Version:
Thin Palantir Foundry provider adapters and model catalog for the Vercel AI SDK.
64 lines (55 loc) • 1.65 kB
text/typescript
import type { AnthropicModelId, GoogleModelId, OpenAIModelId } from '@nyrra/foundry-ai';
import { loadFoundryConfig } from '@nyrra/foundry-ai';
import { createFoundryAnthropic } from '@nyrra/foundry-ai/anthropic';
import { createFoundryGoogle } from '@nyrra/foundry-ai/google';
import { createFoundryOpenAI } from '@nyrra/foundry-ai/openai';
import type { LanguageModel } from 'ai';
import {
DEFAULT_ANTHROPIC_MODEL,
DEFAULT_GOOGLE_MODEL,
DEFAULT_OPENAI_MODEL,
type ProviderName,
requireEnv,
resolveCliModelId,
resolveCliProvider,
} from './config.js';
export { requireEnv };
export function createLanguageModel(
provider = resolveCliProvider(),
overrides?: {
anthropicModel?: AnthropicModelId;
googleModel?: GoogleModelId;
openaiModel?: OpenAIModelId;
},
): {
model: LanguageModel;
modelId: string;
provider: ProviderName;
} {
const config = loadFoundryConfig();
if (provider === 'openai') {
const openai = createFoundryOpenAI(config);
const modelId = resolveCliModelId() ?? overrides?.openaiModel ?? DEFAULT_OPENAI_MODEL;
return {
provider,
modelId,
model: openai(modelId),
};
}
if (provider === 'google') {
const google = createFoundryGoogle(config);
const modelId = resolveCliModelId() ?? overrides?.googleModel ?? DEFAULT_GOOGLE_MODEL;
return {
provider,
modelId,
model: google(modelId),
};
}
const anthropic = createFoundryAnthropic(config);
const modelId = resolveCliModelId() ?? overrides?.anthropicModel ?? DEFAULT_ANTHROPIC_MODEL;
return {
provider,
modelId,
model: anthropic(modelId),
};
}