الانتقال إلى المحتوى الرئيسي

نظرة عامة

تعد LlamaIndex إطار عمل للبيانات لتطبيقات LLM، وهي قوية بشكل خاص لبناء أنظمة RAG (Retrieval Augmented Generation). تعمل LemonData بسلاسة مع تكامل OpenAI الخاص بـ LlamaIndex.

التثبيت

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

التكوين الأساسي

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)

استخدام نماذج مختلفة

# 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"
)

واجهة الدردشة

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)}")

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)

محرك الدردشة (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)

الاستخدام غير المتزامن (Async)

import asyncio

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

asyncio.run(main())

متغيرات البيئة

للحصول على كود أكثر تنظيماً، استخدم متغيرات البيئة:
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")

أفضل الممارسات

استخدم النماذج الأسرع (GPT-4o-mini) لمهام التضمين والتلخيص، واحجز النماذج القوية (GPT-4o، Claude) للاستجابات النهائية.
اضبط حجم الأجزاء بناءً على أنواع مستنداتك. استخدم أجزاء أصغر للمستندات التقنية الكثيفة، وأجزاء أكبر للمحتوى السردي.
قم بتمكين التخزين المؤقت في LlamaIndex لتجنب استدعاءات API المتكررة أثناء التطوير.