Code
LangChain
LangChains ChatOpenAI funktioniert mit nokeep so, wie es ist: Geben Sie die Basis-URL, Ihren Schlüssel und eine Modell-ID an. Python und JavaScript.
Geprüft am 29. Oktober 2026
Installieren und verbinden
pip install langchain-openai
export NOKEEP_API_KEY="sk-nokeep-test" # your own key once it connectsimport 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)In JavaScript gehört die Basis-URL in configuration, nicht auf die oberste Ebene. Eine baseURL auf oberster Ebene wird ignoriert, und der Aufruf geht mit Ihrem nokeep-Schlüssel an den Standardhost.
Streamen
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)In Python fragt ChatOpenAI die Nutzung bei einem Stream nur für seinen Standardhost ab. Setzen Sie stream_usage=True, um Token-Zählungen mit einer eigenen Basis-URL zu bekommen. Der JavaScript-Client fragt sie selbst ab. Siehe Streaming.
Tool-Aufrufe
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"])Beide Modelle rufen Tools auf. LangChain-Agenten, die auf bind_tools aufbauen, funktionieren genauso. with_structured_output sendet response_format mit einem JSON-Schema, das deepseek-v4.1-flash-uncensored annimmt und GLM verwirft. Nutzen Sie DeepSeek für strukturierte Ausgabe. Siehe Tool-Aufrufe und JSON-Ausgabe.
Denken und Sampler
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 antwortet sofort, außer Sie bitten es zu denken. Geben Sie einem Denk-Aufruf Raum: Denken zählt zu max_tokens.
Stolperfallen
- `reasoning_effort` akzeptiert nur die eigenen Werte des Modells.
deepseek-v4.1-flash-uncensoredakzeptiertnone,low,high,max;glm-5.3-flash-uncensoredakzeptiertlow,high. Die Werteminimal,mediumundxhighanderer Apps werden auf die nächstliegende Stufe des Modells abgebildet (mediumalshigh,xhighalsmax, wo das Modell sie hat); jeder andere Wert ergibt400 invalid_reasoning_effort. Siehe Denken. - GLM wählt seine Tools selbst.
glm-5.3-flash-uncensoredakzeptierttool_choicenur alsautoodernone. Ein erzwungenes Tool (requiredoder ein benannter Funktionsname) ergibt400 unsupported_tool_choice. Nutzen Sie DeepSeek, wenn Sie eins erzwingen müssen. - Felder, die ein Modell nicht akzeptiert, werden verworfen, nicht abgelehnt. Der Aufruf antwortet trotzdem, und der Antwort-Header
x-nokeep-ignorednennt, was weggelassen wurde. GLM behält nurtools,tool_choiceundreasoning_effort, daher werden seinetemperatureundresponse_formatverworfen. Siehe welche Felder jedes Modell annimmt. - Inhaltsteile sind nur Text und Bilder.
image_url-Teile funktionieren mitdeepseek-v4.1-flash-uncensored; GLM liest nur Text. Audio- und Dateiteile (ein PDF) ergeben400 unsupported_input. - `n` muss 1 sein. Für mehrere Antworten machen Sie mehrere Aufrufe.
- Nur Chat Completions. Es gibt kein
/v1/responsesund kein/v1/embeddings; ein Framework, das standardmäßig eines davon nutzt, muss auf Chat Completions umgestellt werden, und Embeddings brauchen einen anderen Provider.
ChatOpenAI(use_responses_api=True) und das JavaScript-useResponsesApi: true rufen /v1/responses auf, das nokeep nicht hat. Lassen Sie sie aus.
Fragen
Brauche ich für nokeep ein LangChain-Paket?
Nein. langchain-openai in Python und @langchain/openai in JavaScript funktionieren mit jeder OpenAI-kompatiblen API. Setzen Sie die Basis-URL auf https://nokeep.ai/v1.
Welches Modell sollte ein LangChain-Agent nutzen?
deepseek-v4.1-flash-uncensored für die meisten Agenten: Es liest Bilder, akzeptiert jeden Sampler und lässt sich zu einem Tool-Aufruf bringen. glm-5.3-flash-uncensored kostet weniger, wählt aber seine Tools selbst.