Skip to content

LangChain

LangChain's OpenAI integration works with Cloakray: point ChatOpenAI and OpenAIEmbeddings at the Cloakray base URL and use any model from the catalogue.

Python

pip install langchain-openai
import os
from langchain_openai import ChatOpenAI, OpenAIEmbeddings

llm = ChatOpenAI(
    model="claude-sonnet-4-6",
    base_url="https://api.cloakray.com/v1",
    api_key=os.environ["CLOAKRAY_API_KEY"],
)

print(llm.invoke("What is a vector database?").content)

embeddings = OpenAIEmbeddings(
    model="text-embedding-3-small",
    base_url="https://api.cloakray.com/v1",
    api_key=os.environ["CLOAKRAY_API_KEY"],
)
vector = embeddings.embed_query("What is a vector database?")

JavaScript

npm install @langchain/openai
import { ChatOpenAI, OpenAIEmbeddings } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "claude-sonnet-4-6",
  apiKey: process.env.CLOAKRAY_API_KEY,
  configuration: { baseURL: "https://api.cloakray.com/v1" },
});

const reply = await llm.invoke("What is a vector database?");

const embeddings = new OpenAIEmbeddings({
  model: "text-embedding-3-small",
  apiKey: process.env.CLOAKRAY_API_KEY,
  configuration: { baseURL: "https://api.cloakray.com/v1" },
});

Tools, structured output and streaming

llm.bind_tools(...), llm.with_structured_output(Schema) and llm.stream(...) work as usual, on models that support tools and structured outputs. LangGraph agents built on ChatOpenAI work the same way.

Tips

  • Set base_url explicitly rather than relying on OPENAI_API_BASE, so other OpenAI clients in the same process aren't redirected by accident.
  • Pass check_embedding_ctx_length=False to OpenAIEmbeddings when using an embedding model other than OpenAI's, so LangChain sends text instead of OpenAI-specific token IDs.