Lompat ke konten
Semua dokumentasi

Kode

LangChain

ChatOpenAI dari LangChain bekerja dengan nokeep apa adanya: beri base URL, kunci kamu dan id model. Python dan JavaScript sama-sama bisa.

Diperiksa 29 Oktober 2026

Pasang dan sambungkan

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)

Dalam JavaScript, base URL ditaruh di dalam configuration, bukan di tingkat atas. baseURL di tingkat atas diabaikan dan panggilan pergi ke host bawaan dengan kunci nokeep kamu.

Stream

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)

Dalam Python, ChatOpenAI meminta usage pada stream hanya untuk host bawaannya. Atur stream_usage=True untuk mendapat jumlah token dengan base URL kustom. Klien JavaScript memintanya sendiri. Lihat Streaming.

Pemanggilan tool

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"])

Keduanya bisa memanggil tool. Agen LangChain yang dibangun di atas bind_tools bekerja dengan cara yang sama. with_structured_output mengirim response_format dengan skema JSON, yang diterima deepseek-v4.1-flash-uncensored dan dibuang oleh GLM. Pakai DeepSeek untuk keluaran terstruktur. Lihat Pemanggilan tool dan Keluaran JSON.

Thinking dan 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 langsung menjawab kecuali kamu memintanya berpikir. Beri panggilan thinking ruang yang cukup: thinking dihitung ke max_tokens.

Hal yang perlu diwaspadai

  • `reasoning_effort` hanya menerima nilai milik model. deepseek-v4.1-flash-uncensored menerima none, low, high, max; glm-5.3-flash-uncensored menerima low, high. Nilai minimal, medium dan xhigh dari aplikasi lain dijalankan di tingkat terdekat milik model (medium sebagai high, xhigh sebagai max jika model memilikinya); nilai lain mendapat 400 invalid_reasoning_effort. Lihat Thinking.
  • GLM memilih tool sendiri. glm-5.3-flash-uncensored hanya menerima tool_choice auto atau none. Memaksa sebuah tool (required, atau menyebut nama fungsi) mendapat 400 unsupported_tool_choice. Pakai DeepSeek jika kamu perlu memaksa salah satunya.
  • Field yang tidak bisa diterima model dibuang, bukan ditolak. Panggilan tetap dijawab, dan header x-nokeep-ignored pada respons menyebut apa yang dibuang. GLM hanya menyimpan tools, tool_choice dan reasoning_effort, jadi temperature dan response_format miliknya dibuang. Lihat field apa yang diterima tiap model.
  • Bagian konten hanya teks dan gambar. Bagian image_url berfungsi di deepseek-v4.1-flash-uncensored; GLM hanya membaca teks. Bagian audio dan file (misalnya PDF) mendapat 400 unsupported_input.
  • `n` harus 1. Untuk beberapa balasan, buat beberapa panggilan.
  • Hanya chat completions. Tidak ada /v1/responses dan tidak ada /v1/embeddings; framework yang default ke salah satunya perlu diarahkan ke chat completions, dan embedding memerlukan penyedia lain.

ChatOpenAI(use_responses_api=True) dan useResponsesApi: true di JavaScript memanggil /v1/responses, yang tidak dimiliki nokeep. Biarkan mati.

Pertanyaan

Apakah saya perlu paket LangChain untuk nokeep?

Tidak. langchain-openai di Python dan @langchain/openai di JavaScript bekerja dengan API apa pun yang kompatibel dengan OpenAI. Atur base URL ke https://nokeep.ai/v1.

Model mana yang sebaiknya dipakai agen LangChain?

deepseek-v4.1-flash-uncensored untuk sebagian besar agen: ia membaca gambar, menerima semua sampler dan bisa diarahkan untuk memanggil tool. glm-5.3-flash-uncensored lebih murah tetapi memilih tool sendiri.