Skip to main content
Glama
openai-provider.ts1.31 kB
import OpenAI from 'openai'; import type { EmbeddingProvider } from './provider.js'; export class OpenAIEmbeddingProvider implements EmbeddingProvider { private client: OpenAI; private model: string; constructor(apiKey: string, model = 'text-embedding-3-small', baseURL?: string) { this.client = new OpenAI({ apiKey, baseURL, }); this.model = model; } async generateEmbedding(text: string): Promise<number[]> { try { const response = await this.client.embeddings.create({ model: this.model, input: text.replace(/\n/g, ' '), encoding_format: 'float', }); return response.data[0].embedding; } catch (error) { throw new Error( `Failed to generate embedding: ${ error instanceof Error ? error.message : 'Unknown error' }`, ); } } getDimensions(): number { switch (this.model) { case 'text-embedding-3-small': return 1536; case 'text-embedding-3-large': return 3072; case 'text-embedding-ada-002': return 1536; default: return 1536; } } getModelName(): string { return this.model; } static async validateApiKey(apiKey: string, baseURL?: string): Promise<boolean> { try { const client = new OpenAI({ apiKey, baseURL }); await client.models.list(); return true; } catch { return false; } } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/designly1/mcpmem'

If you have feedback or need assistance with the MCP directory API, please join our Discord server