# Conflicts: # docs/config-catalog.md # packages/llm/llm-deepseek/src/index.ts # packages/llm/llm-deepseek/tests/adapter.spec.ts # packages/llm/llm-pi-ai/README.md # packages/llm/llm-pi-ai/src/index.ts # packages/llm/llm-pi-ai/tests/adapter.spec.ts # packages/llm/llm-pi-ai/tests/convert.spec.ts
42 lines
1.4 KiB
TypeScript
42 lines
1.4 KiB
TypeScript
/**
|
|
* Generic pi-ai-backed LLM adapter plugin. One plugin instance registers an
|
|
* explicit set of provider profiles; requests select a profile by provider and
|
|
* resolve the model dynamically from pi-ai's installed catalog.
|
|
*
|
|
* ```yaml
|
|
* - id: llm
|
|
* name: '@deepseek-ai/dsh-llm-pi-ai'
|
|
* config:
|
|
* providers:
|
|
* - provider: openai
|
|
* apiKey: !!js process.env.OPENAI_API_KEY
|
|
* - provider: anthropic
|
|
* apiKey: !!js process.env.ANTHROPIC_API_KEY
|
|
* - provider: openrouter
|
|
* apiKey: !!js process.env.OPENROUTER_API_KEY
|
|
* baseURL: https://proxy.example.com/v1
|
|
* ```
|
|
*
|
|
* @module @deepseek-ai/dsh-llm-pi-ai
|
|
*/
|
|
|
|
import type { Context } from 'cordis'
|
|
import type {} from '@deepseek-ai/dsh-llm'
|
|
import { PiAiAdapter } from './adapter.ts'
|
|
import { Config, resolveProfiles } from './config.ts'
|
|
|
|
export { PiAiAdapter } from './adapter.ts'
|
|
export type { PiAiAdapterOptions } from './adapter.ts'
|
|
export { Config } from './config.ts'
|
|
export type { PiAiProviderProfile } from './config.ts'
|
|
|
|
export const name = 'llm-pi-ai'
|
|
export const inject = ['llm']
|
|
|
|
/** Register one generic pi-ai adapter for all configured provider routes. */
|
|
export function apply(ctx: Context, config: Config): void {
|
|
const profiles = resolveProfiles(config.providers)
|
|
const adapter = new PiAiAdapter({ profiles })
|
|
ctx.llm.registerAdapter(profiles.map(entry => entry.provider), adapter)
|
|
}
|