Ana içeriğe atla

Genel Bakış

LlamaIndex, LLM uygulamaları için bir veri çerçevesidir ve özellikle RAG (Retrieval Augmented Generation) sistemleri oluşturmak için oldukça güçlüdür. LemonData, LlamaIndex’in OpenAI entegrasyonu ile sorunsuz bir şekilde çalışır.

Kurulum

pip install llama-index llama-index-llms-openai llama-index-embeddings-openai

Temel Yapılandırma

from llama_index.llms.openai import OpenAI
from llama_index.core import Settings

# Configure LLM
llm = OpenAI(
    model="gpt-4o",
    api_key="sk-your-lemondata-key",
    api_base="https://api.lemondata.cc/v1"
)

# Set as default
Settings.llm = llm

# Simple query
response = llm.complete("What is LemonData?")
print(response.text)

Farklı Modelleri Kullanma

# OpenAI GPT-4o
gpt4 = OpenAI(
    model="gpt-4o",
    api_key="sk-your-key",
    api_base="https://api.lemondata.cc/v1"
)

# Anthropic Claude (via OpenAI-compatible endpoint)
claude = OpenAI(
    model="claude-sonnet-4-5",
    api_key="sk-your-key",
    api_base="https://api.lemondata.cc/v1"
)

# Google Gemini
gemini = OpenAI(
    model="gemini-2.5-flash",
    api_key="sk-your-key",
    api_base="https://api.lemondata.cc/v1"
)

Sohbet Arayüzü

from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(role="system", content="You are a helpful assistant."),
    ChatMessage(role="user", content="What is the capital of France?")
]

response = llm.chat(messages)
print(response.message.content)

Streaming

# Streaming completion
for chunk in llm.stream_complete("Write a poem about AI"):
    print(chunk.delta, end="", flush=True)

# Streaming chat
for chunk in llm.stream_chat(messages):
    print(chunk.delta, end="", flush=True)

Embeddings

from llama_index.embeddings.openai import OpenAIEmbedding

embed_model = OpenAIEmbedding(
    model="text-embedding-3-small",
    api_key="sk-your-lemondata-key",
    api_base="https://api.lemondata.cc/v1"
)

# Set as default
Settings.embed_model = embed_model

# Get embeddings
embeddings = embed_model.get_text_embedding("Hello, world!")
print(f"Embedding dimension: {len(embeddings)}")

Belgelerle RAG

from llama_index.core import VectorStoreIndex, SimpleDirectoryReader

# Configure settings
Settings.llm = llm
Settings.embed_model = embed_model

# Load documents
documents = SimpleDirectoryReader("./data").load_data()

# Create index
index = VectorStoreIndex.from_documents(documents)

# Query
query_engine = index.as_query_engine()
response = query_engine.query("What is in my documents?")
print(response)

Sohbet Motoru (Chat Engine)

# Create chat engine with memory
chat_engine = index.as_chat_engine(chat_mode="condense_question")

# Multi-turn conversation
response = chat_engine.chat("What is LemonData?")
print(response)

response = chat_engine.chat("How many models does it support?")
print(response)

Asenkron Kullanım

import asyncio

async def main():
    response = await llm.acomplete("Hello!")
    print(response.text)

asyncio.run(main())

Ortam Değişkenleri

Daha temiz bir kod için ortam değişkenlerini kullanın:
export OPENAI_API_KEY="sk-your-lemondata-key"
export OPENAI_API_BASE="https://api.lemondata.cc/v1"
from llama_index.llms.openai import OpenAI

# Will automatically use environment variables
llm = OpenAI(model="gpt-4o")

En İyi Uygulamalar

Embedding ve özetleme görevleri için daha hızlı modelleri (GPT-4o-mini) kullanın, güçlü modelleri (GPT-4o, Claude) nihai yanıtlar için ayırın.
Parça boyutunu belge türlerinize göre ayarlayın. Yoğun teknik belgeler için daha küçük parçalar, anlatı içerikleri için daha büyük parçalar kullanın.
Geliştirme sırasında gereksiz API çağrılarından kaçınmak için LlamaIndex önbelleğe alma (caching) özelliğini etkinleştirin.