File size: 839 Bytes
d17f367
852a240
 
 
 
 
 
 
 
d17f367
852a240
 
 
d17f367
 
 
 
852a240
f31c318
d17f367
f31c318
d17f367
852a240
d17f367
 
852a240
 
d17f367
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
from __future__ import annotations
from typing import List, Dict
from openai import OpenAI

_client = None

def client() -> OpenAI:
    global _client
    if _client is None:
        # OPENAI_API_KEY / OPENAI_BASE_URL は環境変数から取得
        _client = OpenAI()
    return _client

# Embeddings
def embed_texts(texts: List[str], model: str) -> List[List[float]]:
    resp = client().embeddings.create(model=model, input=texts)
    return [d.embedding for d in resp.data]

# Responses API
def chat(messages: List[Dict], model: str, max_output_tokens: int = 700, temperature: float = 0.2) -> str:
    # Responses APIは input=messages
    resp = client().responses.create(
        model=model,
        input=messages,
        max_output_tokens=max_output_tokens,
        temperature=temperature,
    )
    return resp.output_text