@nyrra/foundry-ai
Version:
Thin Palantir Foundry provider adapters and model catalog for the Vercel AI SDK.
1 lines • 3.97 kB
Source Map (JSON)
{"version":3,"sources":["../../src/providers/google.ts"],"sourcesContent":["import { createGoogleGenerativeAI } from '@ai-sdk/google';\nimport type { wrapLanguageModel } from 'ai';\nimport { NoSuchModelError } from 'ai';\nimport { resolveFoundryConfig } from '../config.js';\nimport { wrapFoundryLanguageModel } from '../middleware.js';\nimport { resolveModelTarget } from '../models/catalog.js';\nimport type { GoogleModelId } from '../models/google-models.js';\nimport type { FoundryConfig } from '../types.js';\n\ntype FoundryLanguageModel = Parameters<typeof wrapLanguageModel>[0]['model'];\n\nexport interface FoundryGoogleProvider {\n (modelId: GoogleModelId): FoundryLanguageModel;\n specificationVersion: 'v3';\n languageModel(modelId: GoogleModelId): FoundryLanguageModel;\n chat(modelId: GoogleModelId): FoundryLanguageModel;\n generativeAI(modelId: GoogleModelId): FoundryLanguageModel;\n embeddingModel(modelId: string): never;\n imageModel(modelId: string): never;\n}\n\nexport function createFoundryGoogle(config: FoundryConfig): FoundryGoogleProvider {\n const providerId = 'foundry-google';\n const resolvedConfig = resolveFoundryConfig(config, 'createFoundryGoogle');\n const baseProvider = createGoogleGenerativeAI({\n apiKey: resolvedConfig.token,\n baseURL: `${resolvedConfig.foundryUrl}/api/v2/llm/proxy/google/v1`,\n fetch: createGoogleProxyFetch(resolvedConfig.token),\n headers: resolvedConfig.attributionRid\n ? { attribution: resolvedConfig.attributionRid }\n : undefined,\n name: providerId,\n });\n\n const createLanguageModel = (modelId: GoogleModelId): FoundryLanguageModel => {\n const resolvedModel = resolveModelTarget(modelId);\n\n return wrapFoundryLanguageModel(baseProvider.chat(resolvedModel.rid), {\n modelId,\n providerId,\n });\n };\n\n function provider(modelId: GoogleModelId): FoundryLanguageModel {\n return createLanguageModel(modelId);\n }\n\n const callableProvider = provider as FoundryGoogleProvider;\n\n callableProvider.specificationVersion = 'v3';\n callableProvider.languageModel = createLanguageModel;\n callableProvider.chat = createLanguageModel;\n callableProvider.generativeAI = createLanguageModel;\n callableProvider.embeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'embeddingModel' });\n };\n callableProvider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return callableProvider;\n}\n\nfunction createGoogleProxyFetch(token: string): typeof fetch {\n return async (input, init) => {\n const request = new Request(input, init);\n const headers = new Headers(request.headers);\n\n headers.delete('x-goog-api-key');\n headers.set('Authorization', `Bearer ${token}`);\n\n return fetch(new Request(request, { headers }));\n };\n}\n"],"mappings":";;;;;;;;;AAAA,SAAS,gCAAgC;AAEzC,SAAS,wBAAwB;AAmB1B,SAAS,oBAAoB,QAA8C;AAChF,QAAM,aAAa;AACnB,QAAM,iBAAiB,qBAAqB,QAAQ,qBAAqB;AACzE,QAAM,eAAe,yBAAyB;AAAA,IAC5C,QAAQ,eAAe;AAAA,IACvB,SAAS,GAAG,eAAe,UAAU;AAAA,IACrC,OAAO,uBAAuB,eAAe,KAAK;AAAA,IAClD,SAAS,eAAe,iBACpB,EAAE,aAAa,eAAe,eAAe,IAC7C;AAAA,IACJ,MAAM;AAAA,EACR,CAAC;AAED,QAAM,sBAAsB,CAAC,YAAiD;AAC5E,UAAM,gBAAgB,mBAAmB,OAAO;AAEhD,WAAO,yBAAyB,aAAa,KAAK,cAAc,GAAG,GAAG;AAAA,MACpE;AAAA,MACA;AAAA,IACF,CAAC;AAAA,EACH;AAEA,WAAS,SAAS,SAA8C;AAC9D,WAAO,oBAAoB,OAAO;AAAA,EACpC;AAEA,QAAM,mBAAmB;AAEzB,mBAAiB,uBAAuB;AACxC,mBAAiB,gBAAgB;AACjC,mBAAiB,OAAO;AACxB,mBAAiB,eAAe;AAChC,mBAAiB,iBAAiB,CAAC,YAAoB;AACrD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,iBAAiB,CAAC;AAAA,EACrE;AACA,mBAAiB,aAAa,CAAC,YAAoB;AACjD,UAAM,IAAI,iBAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEA,SAAS,uBAAuB,OAA6B;AAC3D,SAAO,OAAO,OAAO,SAAS;AAC5B,UAAM,UAAU,IAAI,QAAQ,OAAO,IAAI;AACvC,UAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;AAE3C,YAAQ,OAAO,gBAAgB;AAC/B,YAAQ,IAAI,iBAAiB,UAAU,KAAK,EAAE;AAE9C,WAAO,MAAM,IAAI,QAAQ,SAAS,EAAE,QAAQ,CAAC,CAAC;AAAA,EAChD;AACF;","names":[]}