-
Couldn't load subscription status.
- Fork 19.5k
Description
Checked other resources
- This is a bug, not a usage question.
- I added a clear and descriptive title that summarizes this issue.
- I used the GitHub search to find a similar question and didn't find it.
- I am sure that this is a bug in LangChain rather than my code.
- The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).
- This is not related to the langchain-community package.
- I read what a minimal reproducible example is (https://stackoverflow.com/help/minimal-reproducible-example).
- I posted a self-contained, minimal, reproducible example. A maintainer can copy it and run it AS IS.
Example Code
Recently, the openai package changed so that api_key can accept either a string OR a callable. The callable is used to generate a token, for use with APIs like Azure OpenAI that generate bearer tokens.
Here's the start of init from the openai package:
def __init__(
self,
*,
api_key: str | None | Callable[[], str] = None,
However, when I try to pass a callable into the langchain-openai wrapper, I get a type validation error, since that wrapper still says that api_key must be a string.
Could it be extended to allow for the Callable as well?
Here's full code to replicate, with an Azure account:
import os
import azure.identity
from dotenv import load_dotenv
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
from rich import print
load_dotenv(override=True)
token_provider = azure.identity.get_bearer_token_provider(
azure.identity.DefaultAzureCredential(),
"https://cognitiveservices.azure.com/.default",
)
model = ChatOpenAI(
model=os.environ["AZURE_OPENAI_CHAT_DEPLOYMENT"],
base_url=os.environ["AZURE_OPENAI_ENDPOINT"],
api_key=token_provider,
)
agent = create_agent(model=model, prompt="You are a helpful assistant that makes lots of cat references and uses emojis.", tools=[])
response = agent.invoke({"messages": [{"role": "user", "content": "write a haiku about a hungry cat that wants tuna"}]})
latest_message = response["messages"][-1]
print(latest_message.content)
Error Message and Stack Trace (if applicable)
(.venv) python-openai-demos % /Users/pamelafox/python-openai-demos/.venv/bin/python /Users/pamelafox/python-openai-demos/chat_langchain.py
Traceback (most recent call last):
File "/Users/pamelafox/python-openai-demos/chat_langchain.py", line 17, in
model = ChatOpenAI(
^^^^^^^^^^^
File "/Users/pamelafox/python-openai-demos/.venv/lib/python3.11/site-packages/langchain_core/load/serializable.py", line 115, in init
super().init(*args, **kwargs)
File "/Users/pamelafox/python-openai-demos/.venv/lib/python3.11/site-packages/pydantic/main.py", line 253, in init
validated_self = self.pydantic_validator.validate_python(data, self_instance=self)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
pydantic_core._pydantic_core.ValidationError: 1 validation error for ChatOpenAI
api_key
Input should be a valid string [type=string_type, input_value=<function get_bearer_toke....wrapper at 0x17bd558a0>, input_type=function]
For further information visit https://errors.pydantic.dev/2.11/v/string_type
Description
I need my code to pass type validation
System Info
System Information
OS: Darwin
OS Version: Darwin Kernel Version 23.6.0: Wed May 14 13:52:22 PDT 2025; root:xnu-10063.141.1.705.2~2/RELEASE_ARM64_T6000
Python Version: 3.11.13 (main, Jun 3 2025, 18:38:25) [Clang 16.0.0 (clang-1600.0.26.6)]
Package Information
langchain_core: 0.3.76
langchain: 1.0.0a6
langchain_community: 0.0.33
langsmith: 0.4.30
langchain_openai: 0.3.33
langchain_text_splitters: 0.3.11
langgraph_sdk: 0.2.9
Optional packages not installed
langserve
Other Dependencies
aiohttp: 3.9.5
aiosqlite: Installed. No version info available.
aleph-alpha-client: Installed. No version info available.
anthropic: 0.68.0
arxiv: Installed. No version info available.
assemblyai: Installed. No version info available.
atlassian-python-api: Installed. No version info available.
azure-ai-documentintelligence: Installed. No version info available.
beautifulsoup4: Installed. No version info available.
bibtexparser: Installed. No version info available.
cassio: Installed. No version info available.
chardet: Installed. No version info available.
cloudpickle: Installed. No version info available.
cohere: 5.18.0
databricks-vectorsearch: Installed. No version info available.
dataclasses-json: 0.6.4
datasets: Installed. No version info available.
dgml-utils: Installed. No version info available.
elasticsearch: Installed. No version info available.
esprima: Installed. No version info available.
faiss-cpu: Installed. No version info available.
feedparser: Installed. No version info available.
fireworks-ai: Installed. No version info available.
friendli-client: Installed. No version info available.
geopandas: Installed. No version info available.
gitpython: Installed. No version info available.
google-cloud-documentai: Installed. No version info available.
gql: Installed. No version info available.
gradientai: Installed. No version info available.
hdbcli: Installed. No version info available.
hologres-vector: Installed. No version info available.
html2text: Installed. No version info available.
httpx: 0.28.1
httpx-sse: 0.4.0
httpx<1,>=0.23.0: Installed. No version info available.
httpx>=0.25.2: Installed. No version info available.
javelin-sdk: Installed. No version info available.
jinja2: 3.1.6
jq: Installed. No version info available.
jsonpatch<2.0,>=1.33: Installed. No version info available.
jsonschema: 4.25.1
langchain-anthropic;: Installed. No version info available.
langchain-aws;: Installed. No version info available.
langchain-azure-ai;: Installed. No version info available.
langchain-cohere;: Installed. No version info available.
langchain-community;: Installed. No version info available.
langchain-core<1.0.0,>=0.3.76: Installed. No version info available.
langchain-core<2.0.0,>=0.3.75: Installed. No version info available.
langchain-deepseek;: Installed. No version info available.
langchain-fireworks;: Installed. No version info available.
langchain-google-genai;: Installed. No version info available.
langchain-google-vertexai;: Installed. No version info available.
langchain-groq;: Installed. No version info available.
langchain-huggingface;: Installed. No version info available.
langchain-mistralai;: Installed. No version info available.
langchain-ollama;: Installed. No version info available.
langchain-openai;: Installed. No version info available.
langchain-perplexity;: Installed. No version info available.
langchain-text-splitters<1.0.0,>=0.3.11: Installed. No version info available.
langchain-together;: Installed. No version info available.
langchain-xai;: Installed. No version info available.
langgraph>=0.6.7: Installed. No version info available.
langsmith-pyo3>=0.1.0rc2;: Installed. No version info available.
langsmith>=0.3.45: Installed. No version info available.
lxml: Installed. No version info available.
markdownify: Installed. No version info available.
motor: Installed. No version info available.
msal: 1.28.0
mwparserfromhell: Installed. No version info available.
mwxml: Installed. No version info available.
newspaper3k: Installed. No version info available.
numexpr: Installed. No version info available.
numpy: 1.26.4
nvidia-riva-client: Installed. No version info available.
oci: Installed. No version info available.
openai: 1.108.1
openai-agents>=0.0.3;: Installed. No version info available.
openai<2.0.0,>=1.104.2: Installed. No version info available.
openapi-pydantic: Installed. No version info available.
opentelemetry-api>=1.30.0;: Installed. No version info available.
opentelemetry-exporter-otlp-proto-http>=1.30.0;: Installed. No version info available.
opentelemetry-sdk>=1.30.0;: Installed. No version info available.
oracle-ads: Installed. No version info available.
orjson>=3.10.1: Installed. No version info available.
orjson>=3.9.14;: Installed. No version info available.
packaging>=23.2: Installed. No version info available.
pandas: 2.2.2
pdfminer-six: Installed. No version info available.
pgvector: Installed. No version info available.
praw: Installed. No version info available.
premai: Installed. No version info available.
psychicapi: Installed. No version info available.
py-trello: Installed. No version info available.
pydantic<3,>=1: Installed. No version info available.
pydantic>=2.7.4: Installed. No version info available.
pyjwt: 2.8.0
pymupdf: 1.25.5
pypdf: Installed. No version info available.
pypdfium2: Installed. No version info available.
pyspark: Installed. No version info available.
pytest>=7.0.0;: Installed. No version info available.
PyYAML: 6.0.2
PyYAML>=5.3: Installed. No version info available.
rank-bm25: Installed. No version info available.
rapidfuzz: Installed. No version info available.
rapidocr-onnxruntime: Installed. No version info available.
rdflib: Installed. No version info available.
requests: 2.32.3
requests-toolbelt: 1.0.0
requests-toolbelt>=1.0.0: Installed. No version info available.
requests>=2.0.0: Installed. No version info available.
rich>=13.9.4;: Installed. No version info available.
rspace_client: Installed. No version info available.
scikit-learn: 1.6.1
SQLAlchemy: 2.0.29
sqlite-vss: Installed. No version info available.
streamlit: Installed. No version info available.
sympy: 1.14.0
telethon: Installed. No version info available.
tenacity: 8.2.3
tenacity!=8.4.0,<10.0.0,>=8.1.0: Installed. No version info available.
tidb-vector: Installed. No version info available.
tiktoken<1,>=0.7: Installed. No version info available.
timescale-vector: Installed. No version info available.
tqdm: 4.66.2
tree-sitter: Installed. No version info available.
tree-sitter-languages: Installed. No version info available.
typer: Installed. No version info available.
typing-extensions>=4.7: Installed. No version info available.
upstash-redis: Installed. No version info available.
vcrpy>=7.0.0;: Installed. No version info available.
vdms: Installed. No version info available.
xata: Installed. No version info available.
xmltodict: Installed. No version info available.
zstandard>=0.23.0: Installed. No version info available.