> ## Documentation Index
> Fetch the complete documentation index at: https://docs.venice.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# LlamaIndex

> ابنِ خطوط أنابيب RAG والوكلاء ومحركات الاستعلام باستخدام LlamaIndex عبر نماذج الدردشة والتضمينات الخاصة والمتوافقة مع OpenAI من Venice من خلال عميل OpenAILike.

[LlamaIndex](https://www.llamaindex.ai/) هو إطار عمل للبيانات لبناء خطوط أنابيب RAG والوكلاء ومحركات الاستعلام فوق بياناتك الخاصة. يعمل Venice كخلفية متوافقة مع OpenAI — وجّه عملاء LLM والتضمينات في `OpenAILike` إلى عنوان URL الأساسي لـ Venice واستمر في استخدام بقية واجهة LlamaIndex كالمعتاد.

## المتطلبات المسبقة

* Python 3.9 أو أحدث
* [مفتاح Venice API](/guides/getting-started/generating-api-key)

## الإعداد

ثبّت LlamaIndex مع تكاملات LLM والتضمينات المتوافقة مع OpenAI:

<CodeGroup>
  ```bash pip theme={"system"}
  pip install llama-index llama-index-llms-openai-like llama-index-embeddings-openai-like
  ```

  ```bash uv theme={"system"}
  uv add llama-index llama-index-llms-openai-like llama-index-embeddings-openai-like
  ```
</CodeGroup>

أضف مفتاح Venice API إلى البيئة:

```bash theme={"system"}
export VENICE_API_KEY=your-venice-api-key
```

<Warning>
  احتفظ بمفاتيح API خارج نظام التحكم بالمصدر. فضّل استخدام متغيرات البيئة أو مدير أسرار في الإنتاج.
</Warning>

## تهيئة Venice كنموذج LLM

يتحدث Venice بواجهة OpenAI Chat Completions API. استخدم `OpenAILike` مع عنوان URL الأساسي لـ Venice واضبط `is_chat_model=True`:

```python theme={"system"}
import os

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    model="venice-uncensored",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=32768,
    temperature=0.7,
)

response = llm.complete("Explain zero data retention in two sentences.")
print(str(response))
```

<Note>
  اضبط `context_window` ليطابق النموذج الذي تختاره — لا يستطيع `OpenAILike` استنتاجه لمعرفات النماذج غير الخاصة بـ OpenAI. اضبط `is_function_calling_model=True` فقط للنماذج التي تدعم [استدعاء الدوال](/guides/features/function-calling).
</Note>

### رسائل الدردشة

```python theme={"system"}
from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(role="system", content="You are a concise, privacy-respecting assistant."),
    ChatMessage(role="user", content="Why does uncensored inference matter for research?"),
]

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

## البث المباشر

```python theme={"system"}
for chunk in llm.stream_complete("Write a haiku about decentralization."):
    print(chunk.delta, end="", flush=True)
```

## الإعدادات الافتراضية العامة عبر Settings

اضبط نماذج Venice مرة واحدة عبر `Settings` وسيستخدمها كل فهرس ومحرك استعلام ووكيل:

```python theme={"system"}
import os

from llama_index.core import Settings
from llama_index.llms.openai_like import OpenAILike
from llama_index.embeddings.openai_like import OpenAILikeEmbedding

Settings.llm = OpenAILike(
    model="zai-org-glm-5-1",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=32768,
)

Settings.embed_model = OpenAILikeEmbedding(
    model_name="text-embedding-bge-m3",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
)
```

## التضمينات

```python theme={"system"}
import os

from llama_index.embeddings.openai_like import OpenAILikeEmbedding

embed_model = OpenAILikeEmbedding(
    model_name="text-embedding-bge-m3",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
)

vector = embed_model.get_text_embedding("Venice AI provides private inference.")
print(f"Embedding dimension: {len(vector)}")
```

## خط أنابيب RAG

ابنِ محرك استعلام مدعوم بالاسترجاع فوق مستنداتك. يستخدم هذا `Settings.llm` و`Settings.embed_model` المُهيَّأَين أعلاه:

```python theme={"system"}
from llama_index.core import Document, VectorStoreIndex

documents = [
    Document(text="Venice AI provides private, uncensored AI inference with zero data retention."),
    Document(text="The Venice API is OpenAI-compatible, supporting chat, images, audio, video, and embeddings."),
    Document(text="Venice supports function calling, structured outputs, web search, and reasoning models."),
    Document(text="Privacy tiers include Private (zero retention) and Anonymized (third-party processed)."),
]

index = VectorStoreIndex.from_documents(documents)
query_engine = index.as_query_engine(similarity_top_k=2)

response = query_engine.query("What privacy tiers does Venice offer?")
print(str(response))
```

لتحميل ملفاتك الخاصة من مجلد بدلاً من ذلك، استخدم `SimpleDirectoryReader`:

```python theme={"system"}
from llama_index.core import SimpleDirectoryReader, VectorStoreIndex

documents = SimpleDirectoryReader("./data").load_data()
index = VectorStoreIndex.from_documents(documents)
```

## الوكلاء والأدوات

استخدم `FunctionAgent` لمنح نماذج Venice وصولاً إلى الأدوات. اختر نموذجاً يدعم [استدعاء الدوال](/guides/features/function-calling):

```python theme={"system"}
import asyncio
import os

from llama_index.core.agent.workflow import FunctionAgent
from llama_index.llms.openai_like import OpenAILike


def get_venice_model_price(model_id: str) -> str:
    """Get the pricing for a Venice AI model."""
    prices = {
        "venice-uncensored": "Input: $0.20/1M, Output: $0.90/1M",
        "zai-org-glm-5-1": "Input: $1.75/1M, Output: $5.50/1M",
        "qwen3-5-9b": "Input: $0.10/1M, Output: $0.15/1M",
    }
    return prices.get(model_id, f"Model {model_id} not found in price list.")


llm = OpenAILike(
    model="zai-org-glm-5-1",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=32768,
)

agent = FunctionAgent(
    tools=[get_venice_model_price],
    llm=llm,
    system_prompt="You help users find the right Venice AI model. Use tools when needed.",
)


async def main() -> None:
    response = await agent.run("How much does zai-org-glm-5-1 cost?")
    print(str(response))


asyncio.run(main())
```

## المخرجات المنظمة

غلّف نموذج LLM باستخدام `as_structured_llm` للتحقق من الإجابة النهائية مقابل نموذج Pydantic:

```python theme={"system"}
import os

from pydantic import BaseModel, Field
from llama_index.core.llms import ChatMessage
from llama_index.llms.openai_like import OpenAILike


class PrivacySummary(BaseModel):
    summary: str = Field(description="One-sentence overview")
    benefits: list[str] = Field(description="Key privacy benefits")
    recommendation: str = Field(description="When to choose this approach")


llm = OpenAILike(
    model="zai-org-glm-5-1",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=32768,
)

structured_llm = llm.as_structured_llm(PrivacySummary)
result = structured_llm.chat([
    ChatMessage(role="user", content="Summarize why private inference beats providers that retain chat logs."),
])

summary = result.raw
print(summary.summary)
print(summary.benefits)
```

تصفّح النماذج التي تدعم [الاستجابات المنظمة](/guides/features/structured-responses) قبل الاعتماد على المخرجات المنظمة في الإنتاج.

## المعاملات الخاصة بـ Venice

مرّر الخيارات الخاصة بـ Venice عبر `additional_kwargs` باستخدام `extra_body`. على سبيل المثال، فعّل البحث المدمج على الويب باستخدام `venice_parameters`:

```python theme={"system"}
import os

from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    model="venice-uncensored",
    api_base="https://api.venice.ai/api/v1",
    api_key=os.environ["VENICE_API_KEY"],
    is_chat_model=True,
    context_window=32768,
    additional_kwargs={
        "extra_body": {
            "venice_parameters": {
                "enable_web_search": "auto",
            }
        }
    },
)

response = llm.complete("What are notable AI privacy developments this week?")
print(str(response))
```

يمكنك أيضاً تمرير `extra_body` لكل طلب:

```python theme={"system"}
response = llm.complete(
    "Summarize today's headlines about decentralized AI.",
    extra_body={"venice_parameters": {"enable_web_search": "on"}},
)
```

راجع [مواصفات API](/api-reference/api-spec) للاطلاع على قائمة `venice_parameters` الكاملة (تجريف الويب، الاستشهادات، الشخصيات، عناصر التحكم بالتفكير، ومفاتيح التشفير من طرف إلى طرف).

## النماذج الموصى بها

| حالة الاستخدام            | النموذج                          | السبب                        |
| ------------------------- | -------------------------------- | ---------------------------- |
| الاستعلامات العامة        | `venice-uncensored`              | سريع، رخيص، غير خاضع للرقابة |
| الوكلاء / استدعاء الأدوات | `zai-org-glm-5-1`                | نموذج رائد خاص قوي للوكلاء   |
| التفكير المعقد            | `zai-org-glm-5-1`                | تخطيط متعدد الخطوات أفضل     |
| التضمينات (RAG)           | `text-embedding-bge-m3`          | تضمينات خاصة                 |
| اقتصادي / حجم عالٍ        | `qwen3-5-9b`                     | تكلفة منخفضة لكل رمز         |
| وكلاء يركزون على الكود    | `qwen3-coder-480b-a35b-instruct` | محسّن للكود                  |

معرفات النماذج تتغير مع مرور الوقت — تأكد من المعرفات الحالية عبر [`GET /models`](/api-reference/endpoint/models/list) أو [نظرة عامة على النماذج](/models/overview).

## ميزة الخصوصية

يُستخدم LlamaIndex عادةً لبناء أنظمة RAG فوق المستندات الخاصة وقواعد المعرفة الداخلية وبيانات المستخدمين. اقترانه بـ Venice يُبقي هذا الخط على استدلال خاص وغير خاضع للرقابة:

* **عدم الاحتفاظ بالبيانات** على النماذج الخاصة — لا يتم الاحتفاظ بالمطالبات ولا بالأجزاء المسترجعة ولا بحمولات الأدوات بعد الطلب
* **تحليل غير خاضع للرقابة** عندما قد تتسبب بياناتك أو أسئلتك في تفعيل فلاتر مزودين آخرين
* **بنية متوافقة مع OpenAI** حتى تتمكن من ترحيل تطبيقات LlamaIndex الحالية باستبدال عملاء LLM والتضمينات بـ `OpenAILike`

## استكشاف الأخطاء وإصلاحها

<AccordionGroup>
  <Accordion title="401 غير مصرح به">
    تأكد من ضبط `VENICE_API_KEY` في العملية التي تشغّل تطبيقك. أعد تشغيل الصدفة أو العملية بعد تغيير متغيرات البيئة.
  </Accordion>

  <Accordion title="النموذج غير موجود أو أخطاء نقطة نهاية غير متوقعة">
    استخدم معرّف نموذج حالياً من [صفحة النماذج](/models/overview). اضبط `api_base` إلى `https://api.venice.ai/api/v1` بدون مسار زائد — يضيف LlamaIndex `/chat/completions` تلقائياً.
  </Accordion>

  <Accordion title="أخطاء نافذة السياق أو الرموز">
    لا يستطيع `OpenAILike` استنتاج نافذة السياق لمعرفات النماذج غير الخاصة بـ OpenAI. اضبط `context_window` صراحةً ليطابق النموذج الذي تستخدمه.
  </Accordion>

  <Accordion title="الأدوات يتم تجاهلها">
    اضبط `is_function_calling_model=True` واختر نموذجاً يدعم [استدعاء الدوال](/guides/features/function-calling). اجعل سلاسل توثيق الأدوات دقيقة — يبني LlamaIndex مخططات JSON من التواقيع والتوثيق.
  </Accordion>
</AccordionGroup>

<CardGroup cols={2}>
  <Card title="توثيق LlamaIndex" icon="book" href="https://docs.llamaindex.ai/">
    الفهارس ومحركات الاستعلام والوكلاء وسير العمل
  </Card>

  <Card title="نماذج Venice" icon="database" href="/models/overview">
    تصفح النماذج والقدرات المدعومة
  </Card>
</CardGroup>
