SDK 가이드
LangChain 연동
LangChain의 OpenAI 연동에 base URL과 api14 키만 지정해 api14의 모든 모델을 쓰는 방법입니다. Python과 JavaScript 설정, 스트리밍, 도구, 구조화된 출력, 임베딩을 다룹니다.
LangChain의 OpenAI 연동은 api14에서 그대로 동작합니다. base URL과 키를 지정하고 원하는 모델 id(예: openai/gpt-5-mini)를 사용하세요. 예제는 Python(langchain-openai)과 JavaScript(@langchain/openai)로 제공합니다.
설치
pip install langchain-openai
# or
npm install @langchain/openai @langchain/core
export API14_API_KEY="sk-api14-..."
설정 (Python)
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="anthropic/claude-sonnet-4.5",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
)
print(llm.invoke("Explain vector databases in two sentences.").content)
설정 (JavaScript)
import { ChatOpenAI } from "@langchain/openai";
const llm = new ChatOpenAI({
model: "openai/gpt-5-mini",
apiKey: process.env.API14_API_KEY,
configuration: { baseURL: "https://api14.com/api/v1" },
});
const res = await llm.invoke("Explain vector databases in two sentences.");
console.log(res.content);
스트리밍
for chunk in llm.stream("Write a haiku about APIs."):
print(chunk.content, end="", flush=True)
for await (const chunk of await llm.stream("Write a haiku about APIs.")) {
process.stdout.write(String(chunk.content));
}
도구와 구조화된 출력
from pydantic import BaseModel
from langchain_core.tools import tool
@tool
def get_weather(city: str) -> str:
"""Get the current weather for a city."""
return f"21°C in {city}"
msg = llm.bind_tools([get_weather]).invoke("What is the weather in Istanbul?")
print(msg.tool_calls)
class Place(BaseModel):
city: str
country: str
place = llm.with_structured_output(Place).invoke('I live in Lisbon, Portugal.')
print(place)
임베딩
api14의 임베딩 모델 대부분은 OpenAI 모델이 아니므로, 클라이언트 측 tiktoken 길이 검사를 꺼야 합니다.
from langchain_openai import OpenAIEmbeddings
embeddings = OpenAIEmbeddings(
model="openai/text-embedding-3-small",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
check_embedding_ctx_length=False,
)
vectors = embeddings.embed_documents(["The quick brown fox", "Lorem ipsum"])
게이트웨이 파라미터
게이트웨이 전용 필드는 extra_body(Python) 또는 modelKwargs(JS)로 전달하세요.
llm = ChatOpenAI(
model="openai/gpt-5-mini",
base_url="https://api14.com/api/v1",
api_key=os.environ["API14_API_KEY"],
extra_body={"models": ["anthropic/claude-sonnet-4.5"], "provider": {"sort": "price"}},
)
오류
LangChain은 OpenAI SDK 예외를 그대로 전달합니다. 402 insufficient_balance는 openai.APIStatusError를 발생시키고, 429 rate_limited는 내장 재시도(ChatOpenAI의 max_retries=) 이후 openai.RateLimitError를 발생시킵니다. 오류를 참고하세요.