@nomyx/assistant
Version:
A powerful assistant library and cli for your AI projects. works with Vertex AI (Claude and Gemini)
59 lines (56 loc) • 1.57 kB
text/typescript
import axios from 'axios';
import { OpenAIConfig } from './config';
export async function embed(config: OpenAIConfig, text: string): Promise<number[]> {
try {
const response = await axios.post(
'https://api.openai.com/v1/embeddings',
{
model: 'text-embedding-ada-002',
input: text,
},
{
headers: {
'Authorization': `Bearer ${config.getApiKey()}`,
'Content-Type': 'application/json',
},
}
);
return response.data.data[0].embedding;
} catch (error) {
handleError(config, error);
throw error;
}
}
export async function embedBatch(config: OpenAIConfig, texts: string[]): Promise<number[][]> {
try {
const response = await axios.post(
'https://api.openai.com/v1/embeddings',
{
model: 'text-embedding-ada-002',
input: texts,
},
{
headers: {
'Authorization': `Bearer ${config.getApiKey()}`,
'Content-Type': 'application/json',
},
}
);
return response.data.data.map((item: { embedding: number[] }) => item.embedding);
} catch (error) {
handleError(config, error);
throw error;
}
}
function handleError(config: OpenAIConfig, error: any): void {
const logger = config.getLogger();
if (axios.isAxiosError(error)) {
logger.error('OpenAIProvider: API request failed:', {
status: error.response?.status,
message: error.message,
data: error.response?.data
});
} else {
logger.error('OpenAIProvider: Unexpected error:', error);
}
}