@happ-integ/openai
OpenAI провайдер для LLM и embeddings.
Установка
bash
pnpm add @happ-integ/openaiИспользование
Инициализация
typescript
import { OpenAIClient } from "@happ-integ/openai";
const openai = new OpenAIClient(env.OPENAI_API_KEY);Chat
typescript
const response = await openai.chat({
model: "gpt-4o", // по умолчанию
messages: [
{ role: "system", content: "Ты помощник" },
{ role: "user", content: "Привет!" },
],
});
console.log(response.text);
console.log(response.raw); // полный ответ от OpenAIEmbeddings
typescript
// Один текст
const embedding = await openai.embedding({
text: "Hello world",
model: "text-embedding-3-small", // по умолчанию
});
// => number[]
// Несколько текстов
const embeddings = await openai.embeddings({
texts: ["Hello", "World"],
model: "text-embedding-3-small",
});
// => number[][]Генерация контекста для звонков
typescript
const context = await openai.generateContext({
name: "John Doe",
company: "Acme Corp",
email: "john@acme.com",
source: "Google Ads",
});
// {
// firstMessage: "Привіт! Як дела?",
// context: {
// clientName: "John Doe",
// company: "Acme Corp",
// leadSource: "Google Ads"
// }
// }Health Check
typescript
const isHealthy = await openai.healthCheck();API
OpenAIClient
typescript
new OpenAIClient(apiKey?: string)Параметр:
apiKey— OpenAI API Key (опционально, если установлена переменнаяOPENAI_API_KEY)
Методы
chat(params): Promise<IOpenAIChatResponse>
typescript
interface IOpenAIChatParams {
model?: string; // default: "gpt-4o"
messages: Array<{
role: "system" | "user" | "assistant";
content: string;
}>;
}
// результат:
// { text: string, raw?: any }embedding(params): Promise<number[]>
embeddings(params): Promise<number[][]>
typescript
interface IOpenAIEmbeddingParams {
text: string;
model?: string; // default: "text-embedding-3-small"
apiKey?: string;
}
interface IOpenAIEmbeddingsParams {
texts: string[];
model?: string;
apiKey?: string;
}generateContext(data): Promise<any>
Генерирует контекст для звонков на основе информации о клиенте.
typescript
interface {
name?: string;
company?: string;
email?: string;
source?: string;
}healthCheck(): Promise<boolean>
Модели
| Модель | Использование |
|---|---|
gpt-4o | Chat (самый мощный) |
gpt-4-turbo | Chat (быстрее) |
gpt-3.5-turbo | Chat (дешевле) |
text-embedding-3-small | Embeddings (быстро) |
text-embedding-3-large | Embeddings (точнее) |
Использование через LLMService
Рекомендуется использовать через @happ-integ/llm:
typescript
import { LLMService } from "@happ-integ/llm";
const llm = new LLMService({
primary: "openai",
openaiKey: env.OPENAI_API_KEY,
});
await llm.chat({ messages });Получить API Key
- https://platform.openai.com/account/api-keys
- Create new secret key
- Скопировать и добавить в Doppler / env
Pricing
gpt-4o: $5 / 1M input tokens
text-embedding-3-small: $0.02 / 1M tokensКогда использовать
- ✅ Лучший LLM
- ✅ Embeddings
- ❌ Бюджет ограничен — используйте Claude/Gemini