Kode
LlamaIndex
Pakai kelas OpenAILike dari LlamaIndex dengan base URL, kunci kamu, dan id model. Atur empat flag yang tidak bisa ditebak sendiri, lalu sisa LlamaIndex bekerja di atasnya.
Diperiksa 29 Oktober 2026
Pasang dan hubungkan
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=Truemengirim chat completions. Tanpa itu, LlamaIndex memanggil/v1/completions, yang tidak dimiliki nokeep.is_function_calling_model=Truemembuat agen danchat_with_toolsbisa mengirim tools.context_windowdefault-nya 3,900 token, jadi LlamaIndex memotong chat panjang dan teks hasil pencarian agar muat. Atur ke konteks asli model: 1,000,000 untuk DeepSeek, 128,000 untuk GLM.temperaturedefault-nya 0.1, yang membuat fiksi datar dan berulang. Atur sendiri.
Chat dan streaming
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 dan agen
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())Untuk satu panggilan dengan tools tanpa loop, pakai llm.chat_with_tools([tool], user_msg=...) dan baca panggilannya dengan llm.get_tool_calls_from_response(...). Lihat Pemanggilan tool.
Thinking dan field lain
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 dikirim apa adanya di setiap permintaan. Thinking dihitung ke max_tokens, jadi beri ruang. Lihat Thinking.
Jebakan
- `reasoning_effort` hanya menerima nilai milik model.
deepseek-v4.1-flash-uncensoredmenerimanone,low,high,max;glm-5.3-flash-uncensoredmenerimalow,high. Nilaiminimal,mediumdanxhighdari aplikasi lain dijalankan pada level terdekat model (mediumsebagaihigh,xhighsebagaimaxjika model punya), nilai lain apa pun mendapat400 invalid_reasoning_effort. Lihat Thinking. - GLM memilih tool-nya sendiri.
glm-5.3-flash-uncensoredhanya menerimatool_choiceautoataunone. Memaksa sebuah tool (required, atau menyebut nama fungsi) mendapat400 unsupported_tool_choice. Pakai DeepSeek jika perlu memaksa satu tool. - Field yang tidak bisa diterima sebuah model dibuang, bukan ditolak. Panggilan tetap dijawab, dan header respons
x-nokeep-ignoredmenyebut apa yang dibuang. GLM hanya menerimatools,tool_choicedanreasoning_effort, jaditemperaturedanresponse_format-nya dibuang. Lihat field apa yang diterima tiap model. - `n` harus 1. Minta beberapa balasan dengan beberapa panggilan.
- Hanya chat completions. Tidak ada
/v1/responsesdan tidak ada/v1/embeddings; framework yang default-nya memakai salah satunya harus diarahkan ke chat completions, dan embedding perlu penyedia lain.
Untuk aplikasi RAG, atur Settings.llm = llm dan biarkan model embedding-mu di tempatnya: nokeep menjalankan model chat, bukan embedding. Dengan glm-5.3-flash-uncensored, temperature yang dikirim LlamaIndex di setiap panggilan dibuang dan disebut di x-nokeep-ignored.
Pertanyaan
Kenapa OpenAILike dan bukan OpenAI?
Kelas OpenAI milik LlamaIndex mencocokkan nama model dengan daftarnya sendiri dan menolak nama yang tidak dikenalnya. OpenAILike menerima nama model dan base URL apa pun.
Apakah LlamaIndex mengindeks dokumen saya di nokeep?
Tidak. Pengindeksan dan embedding berjalan di tempat kamu mengaturnya. Hanya panggilan chat yang sampai ke nokeep, dan nokeep hanya menyimpan jumlah token untuk tiap panggilan.