0Pricing
AI Engineering Academy · レッスン

パラメーターによるモデルの挙動制御

temperature、max_tokens、top_pを試して、出力のスタイル、長さ、創造性がどのように変わるかを確認し、用途に適した設定を選びます。

「パラメーターによるモデルの挙動制御」はCoddyKit上の無料AI Engineering Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはAI Engineering Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 AI Engineering Academyコースには全4レッスンが含まれています。

このレッスンの一部はまだ翻訳されておらず、英語で表示されています。

The Core Parameters That Matter

A handful of parameters shape your output the most: temperature, max_tokens, top_p, frequency_penalty, and presence_penalty. Master these five and you control the model.

Temperature: Controlling Randomness

Temperature controls randomness. Near 0, the model picks the safest word and stays consistent — great for facts. Around 0.7-1.0, it gets varied and creative. See the code.

from openai import OpenAI
client = OpenAI()

for temp in [0.0, 0.7, 1.5]:
    response = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': 'Name a color.'}],
        temperature=temp,
        max_tokens=5
    )
    print(f'Temp {temp}: {response.choices[0].message.content}')
# Temp 0.0: Red       (always most common)
# Temp 0.7: Blue      (varied but sensible)
# Temp 1.5: Vermillion (surprising choices)

max_tokens: Controlling Response Length

max_tokens caps how long the reply can get — a safety limit, not a target. Too low and answers get cut off; too high wastes money and time. Add a buffer and watch finish_reason.

# Different max_tokens for different use cases

# Classification: short answer expected
classification_response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Is this positive or negative? "Great product!"'}],
    max_tokens=5  # Only need 1-2 words
)

# Detailed analysis: longer output needed
analysis_response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Analyze the pros and cons of microservices.'}],
    max_tokens=800  # Need space for detailed explanation
)

top_p: Nucleus Sampling

top_p is another randomness dial: it samples only from the top tokens that add up to top_p of the probability. Tip: tune either temperature or top_p, not both at once.

# top_p usage example
response_narrow = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
    top_p=0.1,  # only very likely tokens (conservative, predictable)
    temperature=1.0  # keep temperature at 1 when using top_p
)

response_wide = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Continue: The sky is...'}],
    top_p=0.95,  # most tokens eligible (creative, varied)
    temperature=1.0
)

Frequency Penalty: Reducing Repetition

frequency_penalty discourages the model from repeating the same words, scaling with how often they appear. Reach for it when long answers get repetitive — try 0.3 to 0.7.

# Frequency penalty to reduce repetition in long outputs
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'Write 5 tips for better sleep.'
    }],
    max_tokens=300,
    frequency_penalty=0.5  # reduces repeating the same words/phrases
)
print(response.choices[0].message.content)

Presence Penalty: Encouraging Topic Diversity

presence_penalty nudges the model toward new topics: it penalizes any word that already appeared, even once. Great for brainstorming where you want fresh, varied ideas.

# Presence penalty for diverse brainstorming output
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'List 10 creative ways to use AI in a small business.'
    }],
    max_tokens=400,
    presence_penalty=0.8  # encourages introducing different topics per item
)
print(response.choices[0].message.content)

stop Sequences: Custom Stopping Points

The stop parameter lists strings that halt generation the moment they appear (and they're left out). Stop at a newline to grab a clean single-line answer. See the code.

# Use stop sequences to get clean single-line output
response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{
        'role': 'user',
        'content': 'What is the Python keyword for a function definition?\nAnswer:'
    }],
    max_tokens=20,
    stop=['\n', '.']  # stop at newline or period - gets just the keyword
)
print(repr(response.choices[0].message.content))  # 'def'

seed: Reproducible Outputs

The seed parameter makes output reproducible: same seed plus temperature 0 gives the same reply. Great for testing — just watch the system_fingerprint for backend changes.

# Reproducible output with seed parameter
response1 = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
    temperature=0,
    seed=42
)

response2 = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'Pick a random number from 1 to 10.'}],
    temperature=0,
    seed=42
)

print(response1.choices[0].message.content)  # same
print(response2.choices[0].message.content)  # same
print('Fingerprint:', response1.system_fingerprint)

Choosing Parameters for Common Use Cases

Skip the guesswork with quick presets: temperature 0 for classification, 0.2 for factual Q&A, 0.8-1.0 for creative writing. Start there, then adjust to your task. See the code.

# Parameter presets for different task types
PRESETS = {
    'classify': {'temperature': 0, 'max_tokens': 20},
    'factual_qa': {'temperature': 0.2, 'max_tokens': 400},
    'creative': {'temperature': 0.9, 'max_tokens': 1000, 'frequency_penalty': 0.3},
    'code': {'temperature': 0.1, 'max_tokens': 2000},
    'summary': {'temperature': 0.3, 'max_tokens': 300, 'frequency_penalty': 0.2},
}

def complete(prompt, task_type='factual_qa', **overrides):
    params = {**PRESETS[task_type], **overrides}
    return client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': prompt}],
        **params
    )

Logprobs: Understanding Model Confidence

logprobs returns how confident the model was in each token, plus alternatives it weighed. Low confidence on a fact is a hallucination warning — useful for safer systems.

import math

response = client.chat.completions.create(
    model='gpt-4o-mini',
    messages=[{'role': 'user', 'content': 'The capital of France is?'}],
    max_tokens=3,
    logprobs=True,
    top_logprobs=3  # show top 3 alternative tokens at each position
)

for token_log in response.choices[0].logprobs.content:
    prob = math.exp(token_log.logprob)  # convert log prob to probability
    print(f'Token: {token_log.token!r} | Probability: {prob:.2%}')
    for alt in token_log.top_logprobs:
        print(f'  Alt: {alt.token!r} -> {math.exp(alt.logprob):.2%}')

Testing Parameter Effects Systematically

Don't guess parameters — test them. Build a small grid search that runs the same prompt across combos and scores each. That turns tuning from art into engineering. See the code.

from itertools import product

# Systematic parameter grid search
temperatures = [0.0, 0.3, 0.7]
max_tokens_options = [100, 300]
test_prompt = 'Summarize the benefits of unit testing in 2 sentences.'

results = []
for temp, max_tok in product(temperatures, max_tokens_options):
    resp = client.chat.completions.create(
        model='gpt-4o-mini',
        messages=[{'role': 'user', 'content': test_prompt}],
        temperature=temp,
        max_tokens=max_tok
    )
    results.append({
        'temperature': temp,
        'max_tokens': max_tok,
        'output': resp.choices[0].message.content,
        'actual_tokens': resp.usage.completion_tokens
    })

Quick Check

Test your understanding of AI Engineering concepts from this lesson.

Lesson Recap

You learned to steer the model: temperature sets randomness, max_tokens caps length (watch finish_reason!), and the penalties cut repetition and add variety. Next: error handling.

よくある質問

「パラメーターによるモデルの挙動制御」レッスンは無料ですか?

はい。「パラメーターによるモデルの挙動制御」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、AI Engineering Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 AI Engineering Academyコースには全4レッスンが含まれています。

「パラメーターによるモデルの挙動制御」で何を学びますか?

temperature、max_tokens、top_pを試して、出力のスタイル、長さ、創造性がどのように変わるかを確認し、用途に適した設定を選びます。 ブラウザで直接実行するハンズオンコードでAI Engineering Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

AI Engineering Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのAI Engineering Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「パラメーターによるモデルの挙動制御」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このAI Engineering Academyレッスンでコードを書いて実行できますか?

はい。すべてのAI Engineering Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Python環境のセットアップ
  2. Chat Completionsエンドポイント
  3. パラメーターによるモデルの挙動制御
  4. エラーハンドリングとレート制限
← AI Engineering Academyに戻る