AICredits logo
Integrations

LangChain

Use AICredits as a drop-in replacement for the OpenAI provider in LangChain. Access any model — Claude, Gemini, DeepSeek — through the same ChatOpenAI interface.

Use this page with an AI assistant

Opens a new chat with this docs URL and the correct AICredits base URLs.

Overview

LangChain's ChatOpenAI class accepts a custom base_url parameter, making AICredits a zero-friction drop-in. All LangChain abstractions — chains, agents, RAG, memory — work unchanged.

pip install langchain-openai langchain

Chat Model

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage

llm = ChatOpenAI(
    model="anthropic/claude-sonnet-4.5",
    base_url="https://api.aicredits.in/v1",
    api_key="sk-your-key-here",
    temperature=0.7,
)

messages = [
    SystemMessage(content="You are a helpful assistant."),
    HumanMessage(content="What is the capital of India?"),
]

response = llm.invoke(messages)
print(response.content)
import { ChatOpenAI } from "@langchain/openai";
import { HumanMessage, SystemMessage } from "@langchain/core/messages";

const llm = new ChatOpenAI({
  model: "anthropic/claude-sonnet-4.5",
  configuration: {
    baseURL: "https://api.aicredits.in/v1",
    apiKey: "sk-your-key-here",
  },
  temperature: 0.7,
});

const response = await llm.invoke([
  new SystemMessage("You are a helpful assistant."),
  new HumanMessage("What is the capital of India?"),
]);

console.log(response.content);

Chains

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

llm = ChatOpenAI(
    model="openai/gpt-4o-mini",
    base_url="https://api.aicredits.in/v1",
    api_key="sk-your-key-here",
)

prompt = ChatPromptTemplate.from_template(
    "Summarise the following text in {num_sentences} sentences:\n\n{text}"
)

chain = prompt | llm | StrOutputParser()

result = chain.invoke({
    "text": "LangChain is a framework for developing applications powered by language models...",
    "num_sentences": 2,
})
print(result)

Agents

from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_openai_tools_agent
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.tools import tool

@tool
def get_word_count(text: str) -> int:
    """Count the number of words in a text."""
    return len(text.split())

@tool
def reverse_text(text: str) -> str:
    """Reverse the characters in a text."""
    return text[::-1]

llm = ChatOpenAI(
    model="openai/gpt-4o-mini",
    base_url="https://api.aicredits.in/v1",
    api_key="sk-your-key-here",
)

prompt = ChatPromptTemplate.from_messages([
    ("system", "You are a helpful assistant with text processing tools."),
    ("human", "{input}"),
    MessagesPlaceholder("agent_scratchpad"),
])

agent = create_openai_tools_agent(llm, [get_word_count, reverse_text], prompt)
executor = AgentExecutor(agent=agent, tools=[get_word_count, reverse_text], verbose=True)

result = executor.invoke({"input": "How many words are in 'Hello World from AICredits'?"})
print(result["output"])

RAG Pipeline

from langchain_openai import ChatOpenAI, OpenAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_core.runnables import RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate

llm = ChatOpenAI(
    model="anthropic/claude-sonnet-4.5",
    base_url="https://api.aicredits.in/v1",
    api_key="sk-your-key-here",
)

embeddings = OpenAIEmbeddings(api_key="your-openai-key-for-embeddings")

texts = [
    "AICredits is a unified LLM gateway for India.",
    "Credits are billed in INR and valid for 1 year.",
    "The API is OpenAI-compatible — just change the base URL.",
]
vectorstore = FAISS.from_texts(texts, embeddings)
retriever = vectorstore.as_retriever()

prompt = ChatPromptTemplate.from_template("""Answer based on the context:

Context: {context}

Question: {question}""")

def format_docs(docs):
    return "\n\n".join(doc.page_content for doc in docs)

rag_chain = (
    {"context": retriever | format_docs, "question": RunnablePassthrough()}
    | prompt
    | llm
    | StrOutputParser()
)

answer = rag_chain.invoke("How long are credits valid?")
print(answer)

Streaming

from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

llm = ChatOpenAI(
    model="openai/gpt-4o-mini",
    base_url="https://api.aicredits.in/v1",
    api_key="sk-your-key-here",
    streaming=True,
)

for chunk in llm.stream([HumanMessage(content="Tell me about the Himalayas")]):
    print(chunk.content, end="", flush=True)

print()

Switch between models by changing the model parameter. Claude, GPT-4o, Gemini, DeepSeek — all work through the same LangChain code.

On this page