انتقل إلى المحتوى
كل التوثيق

الكود

LlamaIndex

استخدم الفئة OpenAILike في LlamaIndex مع الرابط الأساسي ومفتاحك ومعرّف النموذج. اضبط أربعة خيارات لا يستطيع تخمينها، وتعمل بقية ميزات LlamaIndex فوقها.

تم التحقق في 29 أكتوبر 2026

التثبيت والاتصال

Shell
pip install llama-index-core llama-index-llms-openai-like
export NOKEEP_API_KEY="sk-nokeep-test"  # your own key once it connects
llm.py
import os
from llama_index.llms.openai_like import OpenAILike

llm = OpenAILike(
    model="deepseek-v4.1-flash-uncensored",
    api_base="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    is_chat_model=True,
    is_function_calling_model=True,
    context_window=1000000,
    temperature=0.8,
)

print(llm.complete("Name three good names for a tavern.").text)
  • is_chat_model=True يرسل طلبات chat completions. ومن دونه يستدعي LlamaIndex المسار /v1/completions، وهو غير متوفر في nokeep.
  • is_function_calling_model=True يتيح للوكلاء وchat_with_tools إرسال الأدوات.
  • القيمة الافتراضية لـ context_window هي 3,900 رمز، لذا يقلّص LlamaIndex المحادثات الطويلة والنصوص المسترجعة لتتسع. اضبطها على السياق الفعلي للنموذج: 1,000,000 لـ DeepSeek، و128,000 لـ GLM.
  • القيمة الافتراضية لـ temperature هي 0.1، وهذا يجعل القصص باهتة ومكررة. اضبطها بنفسك.

الدردشة والبث

Python
from llama_index.core.llms import ChatMessage

messages = [
    ChatMessage(role="system", content="You are a blunt editor."),
    ChatMessage(role="user", content="Cut this opening line to ten words: ..."),
]
print(llm.chat(messages).message.content)

for part in llm.stream_chat(messages):
    print(part.delta, end="", flush=True)

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

Python
import asyncio
from llama_index.core.agent.workflow import FunctionAgent

def get_weather(city: str) -> str:
    """Get the weather in a city."""
    return f"18°C and clear in {city}"

agent = FunctionAgent(
    tools=[get_weather],
    llm=llm,
    system_prompt="You answer questions about the weather.",
)

async def main():
    print(await agent.run("What's the weather in Lisbon?"))

asyncio.run(main())

لاستدعاء واحد بأدوات دون حلقة، استخدم llm.chat_with_tools([tool], user_msg=...) واقرأ الاستدعاءات بـ llm.get_tool_calls_from_response(...). اطلع على استدعاء الأدوات.

التفكير وحقول أخرى

Python
import os
from llama_index.llms.openai_like import OpenAILike

thinker = OpenAILike(
    model="deepseek-v4.1-flash-uncensored",
    api_base="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    is_chat_model=True,
    context_window=1000000,
    max_tokens=4000,
    additional_kwargs={"reasoning_effort": "high", "min_p": 0.05},
)

تُضاف additional_kwargs إلى كل طلب كما هي. ويُحتسب التفكير ضمن max_tokens، فامنحه مساحة كافية. اطلع على التفكير.

أمور تستحق الانتباه

  • `reasoning_effort` يقبل قيم النموذج نفسه فقط. يقبل deepseek-v4.1-flash-uncensored القيم none وlow وhigh وmax، ويقبل glm-5.3-flash-uncensored القيمتين low وhigh. أما minimal وmedium وxhigh من التطبيقات الأخرى فتعمل على أقرب مستوى للنموذج (medium كـ high، وxhigh كـ max حيث يتوفر)، وأي قيمة أخرى تُرجع 400 invalid_reasoning_effort. اطلع على التفكير.
  • GLM يختار أدواته بنفسه. يقبل glm-5.3-flash-uncensored القيمة auto أو none فقط في tool_choice. فرض أداة (required أو تسمية دالة) يُرجع 400 unsupported_tool_choice. استخدم DeepSeek حين تحتاج إلى فرض أداة.
  • الحقول التي لا يقبلها النموذج تُسقَط ولا تُرفض. يُجيب الطلب مع ذلك، وترويسة الاستجابة x-nokeep-ignored تسمّي ما استُبعد. يقبل GLM الحقول tools وtool_choice وreasoning_effort فقط، لذا تُسقَط temperature وresponse_format عنده. اطلع على الحقول التي يقبلها كل نموذج.
  • يجب أن تكون قيمة `n` هي 1. لطلب عدة ردود، أرسل عدة طلبات.
  • chat completions فقط. لا يوجد /v1/responses ولا /v1/embeddings؛ أي إطار يفترض أحدهما يجب توجيهه إلى chat completions، وتحتاج التضمينات إلى مزوّد آخر.

في تطبيق RAG، اضبط Settings.llm = llm وأبقِ نموذج التضمين كما هو: تشغّل nokeep نموذج الدردشة، لا التضمينات. ومع glm-5.3-flash-uncensored تُسقَط temperature التي يرسلها LlamaIndex في كل طلب، وتُذكر في x-nokeep-ignored.

أسئلة

لماذا OpenAILike وليس OpenAI؟

تفحص فئة OpenAI في LlamaIndex اسم النموذج مقارنةً بقائمتها، وترفض الأسماء التي لا تعرفها. أما OpenAILike فيقبل أي اسم وأي رابط أساسي.

هل يفهرس LlamaIndex مستنداتي على nokeep؟

لا. تعمل الفهرسة والتضمينات حيث تضبطها أنت. ولا تصل إلى nokeep سوى طلبات الدردشة، وتحتفظ nokeep بعدد الرموز لكل طلب فقط.