# LangChain > LangChain의 ChatOpenAI를 Kiln으로 연결하는 방법입니다. 설치, 검증한 invoke와 stream 호출, 모델이 reasoning을 마친 뒤 메시지 content에 남는 내용을 설명합니다. Source: https://kiln.bricksum.com/docs/ko/sdks/langchain LangChain의 ChatOpenAI는 base URL과 키를 직접 받습니다. 그래서 OpenAI 모델로 동작하던 체인은 값 세 개만 바꾸면 Kiln에서 그대로 동작합니다. ## 설치 **Python** ```bash pip install langchain-openai ``` ## 연결 **Python** ```python import os from langchain_openai import ChatOpenAI llm = ChatOpenAI( model="qwen3-32b", base_url="https://api.bricksum.com/v1", api_key=os.environ["KILN_API_KEY"], # sk-bk-... max_tokens=800, ) print(llm.invoke("Write a haiku about kilns.").content) for chunk in llm.stream("And one about pottery."): print(chunk.content, end="") ``` ## Kiln에서 다른 점 - **ChatOpenAI를 Kiln으로** langchain-openai 통합을 그대로 쓰면서 model, base_url, api_key만 바꾸세요. 따로 설치할 Kiln 전용 LangChain 패키지는 없으며 계획도 없습니다. - **content에는 답변만** 모델의 reasoning은 메시지 content에 포함되지 않으므로 .content에는 답변 텍스트만 들어 있습니다. 다만 reasoning 토큰도 과금되고 max_tokens에 포함되므로 여유를 두세요. 예제의 800은 이 모델에서 측정하지 않은 시작값이므로, content가 비고 finish_reason이 "length"이면 늘리세요. base URL, 인증, 모든 엔드포인트가 공유하는 요청 파라미터, 응답 형식, 스트리밍, 에러 코드는 어떤 SDK를 쓰든 같습니다. 이 내용은 [API 레퍼런스](https://kiln.bricksum.com/docs/ko/api-reference)에 한 번만 정리돼 있습니다. 위 호출이 도달하는 엔드포인트는 [Chat completions](https://kiln.bricksum.com/docs/ko/api-reference/chat-completions)입니다. 모델 ID는 API가 지금 서빙 중인 것이어야 합니다. 목록을 조회하는 방법과 원하는 ID가 목록에 없을 때 할 일은 [모델](https://kiln.bricksum.com/docs/ko/models) 페이지에 있습니다. SDK와 무관하게 이 모델이 지원하지 않는 기능은 [OpenAI에서 옮겨오기](https://kiln.bricksum.com/docs/ko/migrating-from-openai) 페이지에 정리돼 있습니다. 참고 이 페이지의 스니펫은 2026-09-21에 langchain-openai 1.6.2, langchain-core 1.6.3 환경에서 Kiln API로 직접 실행해 확인했습니다. 확인하지 않은 부분: 그 실행은 gpt-oss-120b에서 했습니다. 페이지는 이제 qwen3-32b을 사용하며, 이 모델로는 아직 다시 실행하지 않았습니다. 채팅 호출과 스트리밍은 실행해 확인했습니다. 에이전트, 툴 바인딩, with_structured_output은 Kiln에서 확인하지 않았습니다.