Zum Inhalt springen
Gesamte Doku

Code

LlamaIndex

Nutzen Sie die Klasse OpenAILike von LlamaIndex mit der Basis-URL, Ihrem Schlüssel und einer Modell-ID. Setzen Sie vier Flags, die sie nicht erraten kann, dann läuft der Rest von LlamaIndex darüber.

Geprüft am 29. Oktober 2026

Installieren und verbinden

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 schickt Chat-Completions. Ohne dieses Flag ruft LlamaIndex /v1/completions auf, das nokeep nicht hat.
  • is_function_calling_model=True lässt Agenten und chat_with_tools Tools schicken.
  • context_window ist standardmäßig 3.900 Token, daher kürzt LlamaIndex lange Chats und abgerufenen Text, bis sie passen. Setzen Sie den echten Kontext des Modells: 1.000.000 für DeepSeek, 128.000 für GLM.
  • temperature ist standardmäßig 0,1, was Fiktion flach und repetitiv macht. Setzen Sie Ihren eigenen Wert.

Chat und Streaming

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)

Tools und Agenten

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())

Für einen einzelnen Aufruf mit Tools und ohne Schleife verwenden Sie llm.chat_with_tools([tool], user_msg=...) und lesen die Aufrufe mit llm.get_tool_calls_from_response(...). Siehe Tool-Aufrufe.

Denken und andere Felder

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 geht unverändert in jede Anfrage. Denken zählt zu max_tokens, also geben Sie ihm Raum. Siehe Denken.

Stolperfallen

  • `reasoning_effort` nimmt nur die eigenen Werte des Modells. deepseek-v4.1-flash-uncensored nimmt none, low, high, max; glm-5.3-flash-uncensored nimmt low, high. Die Werte minimal, medium und xhigh anderer Apps werden auf die nächstliegende Stufe des Modells abgebildet (medium als high, xhigh als max, wo das Modell sie hat); jeder andere Wert ergibt 400 invalid_reasoning_effort. Siehe Denken.
  • GLM wählt seine Tools selbst. glm-5.3-flash-uncensored nimmt tool_choice nur als auto oder none. Ein erzwungenes Tool (required oder ein benannter Funktionsname) ergibt 400 unsupported_tool_choice. Nehmen Sie DeepSeek, wenn Sie eines erzwingen müssen.
  • Felder, die ein Modell nicht annimmt, werden verworfen, nicht abgelehnt. Der Aufruf wird trotzdem beantwortet, und der Antwort-Header x-nokeep-ignored nennt, was weggelassen wurde. GLM behält nur tools, tool_choice und reasoning_effort; daher werden seine temperature und response_format verworfen. Siehe welche Felder jedes Modell annimmt.
  • `n` muss 1 sein. Fordern Sie mehrere Antworten mit mehreren Aufrufen an.
  • Nur Chat-Completions. Es gibt kein /v1/responses und kein /v1/embeddings; ein Framework, das standardmäßig eines davon nutzt, muss auf Chat-Completions umgestellt werden, und Embeddings brauchen einen anderen Anbieter.

Für eine RAG-App setzen Sie Settings.llm = llm und lassen Ihr Embedding-Modell, wo es ist: nokeep betreibt das Chat-Modell, nicht die Embeddings. Bei glm-5.3-flash-uncensored wird die temperature, die LlamaIndex bei jedem Aufruf schickt, verworfen und im Header x-nokeep-ignored genannt.

Fragen

Warum OpenAILike und nicht OpenAI?

Die Klasse OpenAI von LlamaIndex prüft den Modellnamen gegen ihre eigene Liste und lehnt Namen ab, die sie nicht kennt. OpenAILike nimmt jeden Namen und jede Basis-URL.

Indiziert LlamaIndex meine Dokumente bei nokeep?

Nein. Indexierung und Embeddings laufen dort, wo Sie sie einrichten. Nur die Chat-Aufrufe erreichen nokeep, und nokeep speichert nur die Token-Zahlen zu jedem davon.