| """OpenAI ํด๋ผ์ด์ธํธ์ ๋ชจ๋ธ ์ค์ | |
| ์๋ธ์์ด์ ํธ(cause/impact/response) = SUBAGENT_MODEL | |
| ์ค์ผ์คํธ๋ ์ดํฐ๋ ํ์ฌ ๊ฒฐ์ ๋ก ์ ์ํ์๋ผ LLM ํธ์ถ ์์ | |
| ๋ชจ๋ธ๋ช ์ ์ฌ๊ธฐ ํ ๊ณณ์์ ๊ด๋ฆฌํด ๊ต์ฒด๋ฅผ ์ฝ๊ฒ ํจ | |
| LangSmith ํธ๋ ์ด์ฑ: ํ๊ฒฝ๋ณ์ LANGSMITH_TRACING=true ๋ฉด wrap_openai ๋ก ๋ชจ๋ LLM ํธ์ถ ์๋ ์บก์ฒ | |
| """ | |
| import os | |
| from functools import lru_cache | |
| from dotenv import load_dotenv | |
| from openai import OpenAI | |
| load_dotenv() | |
| SUBAGENT_MODEL = "gpt-5-mini" | |
| def _langsmith_enabled() -> bool: | |
| return os.getenv("LANGSMITH_TRACING", "").lower() in ("true", "1", "yes") | |
| def client() -> OpenAI: | |
| """OpenAI ํด๋ผ์ด์ธํธ, ์ฒซ ํธ์ถ ์ 1ํ๋ง ์์ฑ | |
| LANGSMITH_TRACING=true ๋ฉด langsmith.wrappers.wrap_openai ๋ก ๊ฐ์ธ | |
| ๋ชจ๋ chat.completions.create ํธ์ถ์ด ์๋์ผ๋ก LangSmith ๋์๋ณด๋์ ํธ๋ ์ด์ค๋ก ๊ธฐ๋ก๋จ | |
| """ | |
| base = OpenAI() | |
| if _langsmith_enabled(): | |
| try: | |
| from langsmith.wrappers import wrap_openai | |
| return wrap_openai(base) | |
| except ImportError: | |
| pass | |
| return base | |