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

الكود

LangChain

يعمل ChatOpenAI من LangChain مع nokeep كما هو: أعطِه عنوان الأساس ومفتاحك ومعرّف النموذج. بPython وJavaScript معًا.

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

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

pip install langchain-openai
export NOKEEP_API_KEY="sk-nokeep-test"  # your own key once it connects
import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="deepseek-v4.1-flash-uncensored",
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
)

reply = llm.invoke("Name three good names for a tavern.")
print(reply.content)
print(reply.usage_metadata)

في JavaScript يوضع عنوان الأساس داخل configuration، لا في المستوى الأعلى. الـbaseURL في المستوى الأعلى يُتجاهل، ويذهب الاستدعاء إلى الخادم الافتراضي بمفتاح nokeep الخاص بك.

البث

import os
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="deepseek-v4.1-flash-uncensored",
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    stream_usage=True,  # ask for the token counts in the last chunk
)

full = None
for chunk in llm.stream("Tell me a story in three lines."):
    print(chunk.content, end="", flush=True)
    full = chunk if full is None else full + chunk
print("\n", full.usage_metadata)

في Python، يطلب ChatOpenAI الاستخدام في البث فقط عندما يكون الخادم الافتراضي. اضبط stream_usage=True للحصول على عدد الرموز مع عنوان أساس مخصص. عميل JavaScript يطلبها تلقائيًا. انظر البث.

استدعاء الأدوات

from langchain_core.tools import tool

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

message = llm.bind_tools([get_weather]).invoke("What's the weather in Lisbon?")
for call in message.tool_calls:
    print(call["name"], call["args"])

النموذجان يستدعيان الأدوات. وكلاء LangChain المبنيون على bind_tools يعملون بالطريقة نفسها. يرسل with_structured_output الحقل response_format مع مخطط JSON، وهو ما يقبله deepseek-v4.1-flash-uncensored ويحذفه GLM. استخدم DeepSeek للمخرجات المنظّمة. انظر استدعاءات الأدوات ومخرجات JSON.

التفكير وأدوات أخذ العينات

import os
from langchain_openai import ChatOpenAI

thinker = ChatOpenAI(
    model="deepseek-v4.1-flash-uncensored",
    base_url="https://nokeep.ai/v1",
    api_key=os.environ["NOKEEP_API_KEY"],
    reasoning_effort="high",
    max_tokens=4000,
    extra_body={"min_p": 0.05},  # fields ChatOpenAI has no argument for
)

يجيب DeepSeek فورًا ما لم تطلب منه التفكير. أعطِ استدعاء التفكير مساحة: التفكير يُحتسب ضمن 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 منه. انظر الحقول التي يقبلها كل نموذج.
  • أجزاء المحتوى نصوص وصور فقط. أجزاء image_url تعمل على deepseek-v4.1-flash-uncensored؛ يقرأ GLM النص وحده. أجزاء الصوت والملفات (مثل PDF) تأخذ 400 unsupported_input.
  • يجب أن يكون `n` مساويًا لـ1. لطلب عدة ردود، أرسل عدة استدعاءات.
  • إكمال المحادثة فقط. لا يوجد /v1/responses ولا /v1/embeddings؛ إطار العمل الذي يفترض أيًّا منهما يحتاج أن يُوجَّه إلى إكمال المحادثة، والتضمينات تحتاج مزودًا آخر.

ChatOpenAI(use_responses_api=True) وuseResponsesApi: true في JavaScript يستدعيان /v1/responses، وnokeep لا يملكه. اتركهما معطّلين.

أسئلة

هل أحتاج حزمة LangChain خاصة بـnokeep؟

لا. تعمل langchain-openai في Python و@langchain/openai في JavaScript مع أي واجهة متوافقة مع OpenAI. اضبط عنوان الأساس على https://nokeep.ai/v1.

أي نموذج ينبغي أن يستخدمه وكيل LangChain؟

deepseek-v4.1-flash-uncensored لمعظم الوكلاء: يقرأ الصور، ويقبل كل أدوات أخذ العينات، ويمكن جعله يستدعي أداة. glm-5.3-flash-uncensored أرخص لكنه يختار أدواته بنفسه.