1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| import tiktoken
def safe_completion(messages, model="gpt-4", desired_max_tokens=1000):
encoding = tiktoken.encoding_for_model(model)
input_tokens = count_tokens(messages, model)
# モデルの最大コンテキスト長
max_context = {"gpt-4": 8192, "gpt-4-turbo": 128000, "gpt-3.5-turbo": 16385}
available_tokens = max_context.get(model, 4096) - input_tokens
safe_max_tokens = min(desired_max_tokens, available_tokens - 100)
return client.chat.completions.create(
model=model,
messages=messages,
max_tokens=max(safe_max_tokens, 100)
)
|