الكود
LlamaIndex
استخدم الفئة OpenAILike في LlamaIndex مع الرابط الأساسي ومفتاحك ومعرّف النموذج. اضبط أربعة خيارات لا يستطيع تخمينها، وتعمل بقية ميزات LlamaIndex فوقها.
تم التحقق في 29 أكتوبر 2026
التثبيت والاتصال
pip install llama-index-core llama-index-llms-openai-like
export NOKEEP_API_KEY="sk-nokeep-test" # your own key once it connectsimport 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، وهذا يجعل القصص باهتة ومكررة. اضبطها بنفسك.
الدردشة والبث
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)الأدوات والوكلاء
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(...). اطلع على استدعاء الأدوات.
التفكير وحقول أخرى
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 بعدد الرموز لكل طلب فقط.