#!/usr/bin/env python3 """AOCore behind LangChain's ChatOpenAI — point openai_api_base at the gateway. Standard LangChain ChatOpenAI configuration; no AOCore SDK required. The gateway speaks the OpenAI wire format, so LangChain's ChatOpenAI is fully compatible. For quota-header visibility, drop down to the OpenAI SDK directly — see ../python-openai-sdk/chat.py. LangChain wraps the response and doesn't expose the raw HTTP headers by default. Use this pattern for orchestration; use the SDK pattern for per-call observability. Run: pip install "langchain>=0.3,<0.4" "langchain-openai>=0.2,<0.3" export AOSENTRY_KEY="sk-..." python chat.py """ import os import sys from langchain_openai import ChatOpenAI def main() -> int: api_key = os.environ.get("AOSENTRY_KEY") if not api_key: print("Set AOSENTRY_KEY to your minted API key (sk-...).", file=sys.stderr) return 1 base_url = os.environ.get("AOSENTRY_BASE_URL", "https://gateway.core.aocyber.ai/v1") llm = ChatOpenAI( model="gpt-4o-mini", openai_api_base=base_url, openai_api_key=api_key, temperature=0.2, max_tokens=64, ) result = llm.invoke("Say hello in one sentence.") print(result.content) return 0 if __name__ == "__main__": raise SystemExit(main())