Skip to content

Connect LangChain to TrustedRails

LangChain is a framework for building applications on top of language models. Its OpenAI chat-model integration accepts a custom base URL, so you can point it at TrustedRails and build on open-source models: the only change from a standard OpenAI setup is the base URL, the key, and the model id.

The integration is the same in Python and JavaScript/TypeScript; only the package name and the constructor differ. Pick your language below.

Install the OpenAI integration package:

Terminal window
pip install langchain-openai

Point ChatOpenAI at TrustedRails:

from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="zai-org/GLM-5.3-Flash",
base_url="https://proxy.trustedrails.com/v1",
api_key="tr-prx-your-api-key",
)
response = llm.invoke("Say hello from TrustedRails.")
print(response.content)

The model must match a TrustedRails-supported id exactly, for example zai-org/GLM-5.3-Flash or MiniMaxAI/MiniMax-M2.7 (see Supported Models). Once the model is configured, use it anywhere a LangChain chat model goes: chains, agents, and LCEL pipelines all work unchanged.

LangChain's OpenAIEmbeddings works with TrustedRails the same way: same base URL and key, with BAAI/bge-m3 as the model (see Embeddings & RAG). The embeddings drop into any LangChain vector store.

from langchain_openai import OpenAIEmbeddings
from langchain_core.vectorstores import InMemoryVectorStore
embeddings = OpenAIEmbeddings(
model="BAAI/bge-m3",
base_url="https://proxy.trustedrails.com/v1",
api_key="tr-prx-your-api-key",
check_embedding_ctx_length=False,
)
store = InMemoryVectorStore(embeddings)
store.add_texts([
"TrustedRails bills in USD per token.",
"The Eiffel Tower is in Paris.",
])
print(store.similarity_search("How am I charged?", k=1)[0].page_content)

check_embedding_ctx_length=False is required: without it, LangChain pre-tokenizes your text with tiktoken and sends token arrays instead of strings, which the API rejects with a 400.

Run the snippet above. A printed reply confirms LangChain is reaching TrustedRails through your key.

  • 401 / invalid API key: wrong or paused key. Create a fresh one from Create a TrustedRails API Key.
  • Model not found / unsupported: the model must match a model TrustedRails serves exactly (see Supported Models).
  • Connection errors: confirm the base URL is exactly https://proxy.trustedrails.com/v1.
  • 400 "input must be a string or a non-empty array of strings" on embeddings: Python's OpenAIEmbeddings sent tiktoken token arrays instead of text. Set check_embedding_ctx_length=False (see the embeddings section above).
  • Looking for the model's thinking: reasoning models return their thinking in a separate reasoning response field, never inside content — the text LangChain returns is clean answer text. To skip thinking entirely (shorter, cheaper responses), see reasoning control.