multilingual_sns_analyzer / app /lib /openai_client.py
Corin1998's picture
Update app/lib/openai_client.py
c8af725 verified
from __future__ import annotations
from openai import OpenAI
from ..config import settings
_client: OpenAI | None = None
def get_client() -> OpenAI:
"""
OpenAI v1 SDK のクライアントを(環境変数から)初期化して返す。
HF Spaces の Secrets に OPENAI_API_KEY を設定しておくこと。
"""
global _client
if _client is None:
if not settings.openai_api_key:
raise RuntimeError("OPENAI_API_KEY is not set in the environment.")
_client = OpenAI(api_key=settings.openai_api_key)
return _client
def embed_texts(texts: list[str], model: str | None = None) -> list[list[float]]:
"""
文章群を埋め込みに変換(既定: text-embedding-3-small)。
"""
model = model or settings.embedding_model
client = get_client()
res = client.embeddings.create(model=model, input=texts)
return [d.embedding for d in res.data]
def chat_summarize(prompt: str, model: str | None = None) -> str:
"""
文章の要約やクラスタ説明を作るための軽量ヘルパ。
"""
model = model or settings.chat_model
client = get_client()
msg = client.chat.completions.create(
model=model,
messages=[
{"role": "system", "content": "You are a concise multilingual analyst. Respond in Japanese."},
{"role": "user", "content": prompt}
],
temperature=0.2,
)
return (msg.choices[0].message.content or "").strip()