İçeriğe geç
Codebiy

Yapay Zeka

AI Entegrasyonu: LLM'leri Ürünlerinize Nasıl Entegre Edersiniz?

AI ve LLM entegrasyonu, modern uygulamaların ayrılmaz bir parçası haline geldi. Bu rehberde, OpenAI, Anthropic ve diğer LLM sağlayıcılarını nasıl entegre edeceğinizi öğreneceksiniz.

Yazan: codebiy Team · Yayın · 10 dk okuma

AI entegrasyonu, modern uygulamaların rekabet avantajı sağlaması için kritik öneme sahip. Bu makalede, Large Language Model'leri (LLM) ürünlerinize nasıl entegre edeceğinizi adım adım öğreneceksiniz.

LLM Sağlayıcıları

OpenAI GPT

OpenAI, en popüler LLM sağlayıcısı. GPT-4 ve GPT-3.5 modellerini kullanabilirsiniz.

import OpenAI from 'openai';

const openai = new OpenAI({
  apiKey: process.env.OPENAI_API_KEY,
});

async function generateText(prompt: string) {
  const completion = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: [{ role: 'user', content: prompt }],
  });
  
  return completion.choices[0].message.content;
}

Anthropic Claude

Claude, güvenlik ve güvenilirlik odaklı bir LLM:

import Anthropic from '@anthropic-ai/sdk';

const anthropic = new Anthropic({
  apiKey: process.env.ANTHROPIC_API_KEY,
});

async function chatWithClaude(prompt: string) {
  const message = await anthropic.messages.create({
    model: 'claude-3-opus-20240229',
    max_tokens: 1024,
    messages: [{ role: 'user', content: prompt }],
  });
  
  return message.content[0].text;
}

Entegrasyon Stratejileri

1. API Wrapper Oluşturma

Farklı sağlayıcılar için unified bir API wrapper oluşturun:

interface LLMProvider {
  generate(prompt: string): Promise<string>;
}

class OpenAIProvider implements LLMProvider {
  async generate(prompt: string): Promise<string> {
    // OpenAI implementation
  }
}

class AnthropicProvider implements LLMProvider {
  async generate(prompt: string): Promise<string> {
    // Anthropic implementation
  }
}

class LLMService {
  constructor(private provider: LLMProvider) {}
  
  async generate(prompt: string): Promise<string> {
    return this.provider.generate(prompt);
  }
}

2. Streaming Responses

Büyük yanıtlar için streaming kullanın:

async function* streamResponse(prompt: string) {
  const stream = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: [{ role: 'user', content: prompt }],
    stream: true,
  });
  
  for await (const chunk of stream) {
    yield chunk.choices[0]?.delta?.content || '';
  }
}

3. Error Handling

Robust error handling implementasyonu:

async function safeGenerate(prompt: string) {
  try {
    return await generateText(prompt);
  } catch (error) {
    if (error instanceof OpenAI.APIError) {
      // Handle API errors
      console.error('OpenAI API Error:', error.message);
    }
    throw error;
  }
}

Use Cases

1. Content Generation

async function generateBlogPost(topic: string) {
  const prompt = `Write a blog post about ${topic}`;
  return await generateText(prompt);
}

2. Code Generation

async function generateCode(description: string) {
  const prompt = `Generate TypeScript code for: ${description}`;
  return await generateText(prompt);
}

3. Chat Interface

interface Message {
  role: 'user' | 'assistant';
  content: string;
}

async function chat(messages: Message[]) {
  const completion = await openai.chat.completions.create({
    model: 'gpt-4',
    messages: messages,
  });
  
  return completion.choices[0].message.content;
}

Cost Optimization

1. Caching

Sık kullanılan prompt'ları cache'leyin:

import { LRUCache } from 'lru-cache';

const cache = new LRUCache<string, string>({ max: 100 });

async function cachedGenerate(prompt: string) {
  const cached = cache.get(prompt);
  if (cached) return cached;
  
  const result = await generateText(prompt);
  cache.set(prompt, result);
  return result;
}

2. Token Management

Token kullanımını optimize edin:

function countTokens(text: string): number {
  // Approximate token count
  return Math.ceil(text.length / 4);
}

function truncatePrompt(prompt: string, maxTokens: number): string {
  const tokens = countTokens(prompt);
  if (tokens <= maxTokens) return prompt;
  
  // Truncate to fit within token limit
  return prompt.slice(0, maxTokens * 4);
}

Security Best Practices

1. API Key Management

API key'leri environment variable'larda saklayın:

const apiKey = process.env.OPENAI_API_KEY;
if (!apiKey) {
  throw new Error('OPENAI_API_KEY is not set');
}

2. Input Validation

Kullanıcı input'larını validate edin:

function validatePrompt(prompt: string): void {
  if (prompt.length > 10000) {
    throw new Error('Prompt too long');
  }
  
  // Add more validation rules
}

Sonuç

LLM entegrasyonu, modern uygulamalar için güçlü bir yetenek. Bu rehberde öğrendiklerinizle, AI özellikli uygulamalar geliştirmeye başlayabilirsiniz.