0Pricing
AI Agents · บทเรียน

โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง

การกำหนดค่าเฉพาะสภาพแวดล้อม แฟล็กฟีเจอร์ และการนำไปใช้งานเป็นระยะ

โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน AI Agents และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดโปรไฟล์การกำหนดค่าจึงสำคัญ

เอเจนต์ในสภาพแวดล้อมจริงและเอเจนต์เพื่อการพัฒนาควรทำงานแตกต่างกัน ทั้งระดับการบันทึกเหตุการณ์ ระดับของโมเดล (ต้นทุนเทียบกับคุณภาพ) ฐานข้อมูล และขีดจำกัดอัตราการใช้งานที่แตกต่างกัน โปรไฟล์การกำหนดค่าทำให้เรื่องนี้เกิดขึ้นโดยอัตโนมัติ — ตัวแปรสภาพแวดล้อมเพียงตัวเดียวสามารถสลับการตั้งค่าทั้งหมดได้พร้อมกัน

การตรวจจับสภาพแวดล้อมด้วยตัวแปร ENV

รูปแบบมาตรฐานคือการอ่านตัวแปร ENV (หรือ ENVIRONMENT) ซึ่งระบุบริบทการนำไปใช้งานในปัจจุบัน จากนั้นโค้ดจะเลือกโปรไฟล์การกำหนดค่าที่เหมาะสมตามค่านี้

import os

# Read the environment identifier
ENV = os.getenv('ENV', 'development').lower()

if ENV not in ('development', 'staging', 'production'):
    raise ValueError(
        f'Invalid ENV value: "{ENV}". '
        f'Must be: development, staging, or production'
    )

print(f'Running in {ENV} mode')

# Usage:
# ENV=development python agent.py   -> dev settings
# ENV=staging python agent.py       -> staging settings
# ENV=production python agent.py    -> prod settings
# python agent.py                   -> defaults to development

คลาสการกำหนดค่าแยกตามสภาพแวดล้อม

กำหนดคลาสการกำหนดค่าพื้นฐานและคลาสย่อยสำหรับแต่ละสภาพแวดล้อม คลาสย่อยแต่ละคลาสจะแทนที่ค่าเฉพาะส่วนที่แตกต่างกัน วิธีนี้อ่านง่ายและปลอดภัยด้านชนิดข้อมูลมากกว่าการใช้พจนานุกรมขนาดใหญ่ที่เต็มไปด้วยเงื่อนไข

import os

class BaseConfig:
    OPENAI_API_KEY: str = os.environ.get('OPENAI_API_KEY', '')
    MAX_STEPS: int = 20
    LOG_LEVEL: str = 'INFO'
    CACHE_ENABLED: bool = True
    CACHE_TTL_SECONDS: int = 3600

class DevelopmentConfig(BaseConfig):
    MODEL: str = 'gpt-4o-mini'  # cheaper in dev
    LOG_LEVEL: str = 'DEBUG'    # verbose logging in dev
    CACHE_ENABLED: bool = False  # fresh results in dev
    MAX_STEPS: int = 10          # shorter loops in dev

class StagingConfig(BaseConfig):
    MODEL: str = 'gpt-4o-mini'
    LOG_LEVEL: str = 'INFO'
    MAX_STEPS: int = 20

class ProductionConfig(BaseConfig):
    MODEL: str = 'gpt-4o'       # best quality in prod
    LOG_LEVEL: str = 'WARNING'  # less noise in prod
    MAX_STEPS: int = 30         # more steps allowed in prod

if __name__ == '__main__':
    for cls in (DevelopmentConfig, StagingConfig, ProductionConfig):
        c = cls()
        print(f'{cls.__name__}: model={c.MODEL} log_level={c.LOG_LEVEL} max_steps={c.MAX_STEPS} cache={c.CACHE_ENABLED}')

โรงงานการกำหนดค่า: การเลือกโปรไฟล์ที่เหมาะสม

ฟังก์ชันโรงงานการกำหนดค่าจะอ่านตัวแปร ENV และส่งคืนคลาสการกำหนดค่าที่เหมาะสม ฟังก์ชันเดียวนี้เป็นจุดเดียวที่รู้ตรรกะการสลับสภาพแวดล้อม

import os

def get_config():
    env = os.getenv('ENV', 'development').lower()
    configs = {
        'development': DevelopmentConfig,
        'staging': StagingConfig,
        'production': ProductionConfig
    }
    config_class = configs.get(env)
    if not config_class:
        raise ValueError(f'Unknown environment: {env}')
    return config_class()

# Usage throughout your agent:
config = get_config()
print(f'Model: {config.MODEL}')
print(f'Max steps: {config.MAX_STEPS}')
print(f'Log level: {config.LOG_LEVEL}')

# All code uses config.MODEL, config.LOG_LEVEL etc.
# Switching environments requires only changing ENV variable

การตั้งค่า Pydantic สำหรับการกำหนดชนิดข้อมูล

pydantic-settings เป็นวิธีที่มีประสิทธิภาพและปลอดภัยด้านชนิดข้อมูลสำหรับกำหนดการตั้งค่า โดยจะอ่านตัวแปรสภาพแวดล้อม ตรวจสอบชนิดข้อมูลโดยอัตโนมัติ และโหลดค่าจากไฟล์ .env ได้ ติดตั้งด้วย pip install pydantic-settings

# pip install pydantic-settings
from pydantic_settings import BaseSettings
from pydantic import Field
from typing import Literal

class AgentSettings(BaseSettings):
    # Required fields — raise error if not set
    openai_api_key: str
    search_api_key: str

    # Optional with defaults
    env: Literal['development', 'staging', 'production'] = 'development'
    model: str = 'gpt-4o-mini'
    max_steps: int = Field(default=20, ge=1, le=100)  # validated range
    log_level: str = 'INFO'
    cache_enabled: bool = True
    cache_ttl_seconds: int = Field(default=3600, ge=60)

    class Config:
        env_file = '.env'
        case_sensitive = False  # OPENAI_API_KEY -> openai_api_key

# settings = AgentSettings()  # raises ValidationError if required vars missing

การตั้งค่า Pydantic พร้อมค่าที่แทนที่ตามสภาพแวดล้อม

ใช้การตั้งค่า Pydantic ร่วมกับคุณสมบัติที่คำนวณได้ เพื่อใช้ค่าเริ่มต้นเฉพาะสภาพแวดล้อม ซึ่งยังสามารถถูกแทนที่ด้วยตัวแปรสภาพแวดล้อมได้

from pydantic_settings import BaseSettings
from pydantic import model_validator
import os

class AgentSettings(BaseSettings):
    openai_api_key: str
    env: str = 'development'
    model: str = ''
    log_level: str = ''
    max_steps: int = 0

    @model_validator(mode='after')
    def apply_env_defaults(self) -> 'AgentSettings':
        env_defaults = {
            'development': {'model': 'gpt-4o-mini', 'log_level': 'DEBUG', 'max_steps': 10},
            'staging':     {'model': 'gpt-4o-mini', 'log_level': 'INFO',  'max_steps': 20},
            'production':  {'model': 'gpt-4o',      'log_level': 'WARNING', 'max_steps': 30}
        }
        defaults = env_defaults.get(self.env, env_defaults['development'])
        if not self.model:     self.model     = defaults['model']
        if not self.log_level: self.log_level = defaults['log_level']
        if not self.max_steps: self.max_steps = defaults['max_steps']
        return self

    class Config:
        env_file = '.env'

แฟล็กคุณลักษณะแยกตามสภาพแวดล้อม

ใช้โปรไฟล์การกำหนดค่าเพื่อเปิดหรือปิดคุณลักษณะตามสภาพแวดล้อม เช่น เปิดใช้ส่วนติดต่อผู้ใช้สำหรับการแก้ไขข้อบกพร่องเฉพาะในการพัฒนา ใช้ระบบชำระเงินจริงเฉพาะในสภาพแวดล้อมจริง และชี้ไปยังบริการในสภาพแวดล้อมจำลองในสภาพแวดล้อมจัดเตรียม

import os

class AgentFeatureFlags:
    env = os.getenv('ENV', 'development')

    # Enable memory persistence (requires DB)
    MEMORY_ENABLED: bool = env in ('staging', 'production')

    # Use real payment processing
    REAL_PAYMENTS: bool = env == 'production'

    # Enable verbose step-by-step output
    VERBOSE_STEPS: bool = env == 'development'

    # Use cheap model for unit test runs
    FORCE_MINI_MODEL: bool = os.getenv('CI') == 'true'

flags = AgentFeatureFlags()
print(f'Memory: {flags.MEMORY_ENABLED}')
print(f'Verbose: {flags.VERBOSE_STEPS}')
print(f'Payments: {flags.REAL_PAYMENTS}')

การตรวจสอบการกำหนดค่าเมื่อเริ่มต้น

ตรวจสอบการกำหนดค่าทั้งหมดเมื่อเริ่มต้น และพิมพ์สรุปเพื่อให้ผู้ปฏิบัติงานยืนยันได้ว่าเอเจนต์ได้รับการกำหนดค่าอย่างถูกต้องก่อนเริ่มประมวลผล วิธีนี้ช่วยหลีกเลี่ยงการกำหนดค่าผิดพลาดโดยไม่มีการแจ้งเตือนในสภาพแวดล้อมจริง

import os
import sys

def validate_and_print_config(config) -> None:
    print(f'=== Agent Configuration ===')
    print(f'Environment : {config.env}')
    print(f'Model       : {config.model}')
    print(f'Max steps   : {config.max_steps}')
    print(f'Log level   : {config.log_level}')
    print(f'Cache       : {"enabled" if config.cache_enabled else "disabled"}')
    print(f'OpenAI key  : ...{config.openai_api_key[-4:]}')
    print('===========================')

    # Critical validations
    if config.env == 'production' and config.log_level == 'DEBUG':
        print('WARNING: DEBUG logging in production exposes sensitive data!')

    if not config.openai_api_key:
        print('FATAL: OPENAI_API_KEY not set')
        sys.exit(1)

    print('Configuration validated.')

if __name__ == '__main__':
    from types import SimpleNamespace
    demo_config = SimpleNamespace(
        env='development', model='gpt-4o-mini', max_steps=10,
        log_level='DEBUG', cache_enabled=False, openai_api_key='sk-demo-1234'
    )
    validate_and_print_config(demo_config)

การแทนที่ค่าการกำหนดค่าตามสภาพแวดล้อม

ในกระบวนการ CI/CD ให้แทนที่ค่าเฉพาะของการกำหนดค่าโดยไม่ต้องเปลี่ยนโปรไฟล์ทั้งหมด ส่งตัวแปรแต่ละรายการควบคู่กับตัวแปร ENV เพื่อปรับการตั้งค่าสำหรับการนำไปใช้งานแต่ละครั้ง

# Staging deployment with custom model override:
# ENV=staging AGENT_MODEL=gpt-4o python agent.py

# Production with reduced max_steps for cost control:
# ENV=production AGENT_MAX_STEPS=15 python agent.py

# CI test run — use production profile but with cheap model:
# ENV=production AGENT_MODEL=gpt-4o-mini CI=true python agent.py

# The config class reads ENV first for the profile,
# then individual overrides take precedence:
import os

env = os.getenv('ENV', 'development')
config = get_config()  # loads base profile for env

# Individual overrides applied on top:
if os.getenv('AGENT_MODEL'):
    config.MODEL = os.getenv('AGENT_MODEL')
if os.getenv('AGENT_MAX_STEPS'):
    config.MAX_STEPS = int(os.getenv('AGENT_MAX_STEPS'))

print(f'Final model: {config.MODEL}')

การจัดทำเอกสารโปรไฟล์การกำหนดค่าสำหรับเพื่อนร่วมทีม

จัดทำเอกสารโปรไฟล์การกำหนดค่าให้ชัดเจนในความคิดเห็นของโค้ด ใน README หรือทั้งสองแห่ง นักพัฒนาคนใหม่จำเป็นต้องเข้าใจว่าส่วนใดเปลี่ยนแปลงระหว่างสภาพแวดล้อม เพื่อให้สามารถนำระบบไปใช้งานได้อย่างมั่นใจ

# config_profiles.py — Configuration per environment
#
# | Setting        | development    | staging        | production  |
# |----------------|----------------|----------------|-------------|
# | MODEL          | gpt-4o-mini    | gpt-4o-mini    | gpt-4o      |
# | MAX_STEPS      | 10             | 20             | 30          |
# | LOG_LEVEL      | DEBUG          | INFO           | WARNING     |
# | CACHE_ENABLED  | False          | True           | True        |
# | MEMORY_DB      | SQLite (local) | PostgreSQL     | PostgreSQL  |
#
# To switch environments:
#   ENV=staging python agent.py
#
# To override a single setting:
#   ENV=production AGENT_MAX_STEPS=15 python agent.py

print('Config profile table documents all per-environment differences')

การกำหนดค่าในการทดสอบ: โปรไฟล์การทดสอบที่บังคับใช้

การทดสอบควรทำงานด้วยการกำหนดค่าการทดสอบที่เฉพาะเจาะจงเสมอ — ห้ามใช้การตั้งค่าของสภาพแวดล้อมจริงโดยเด็ดขาด สร้าง fixture การกำหนดค่าการทดสอบที่ใช้การตั้งค่าที่เหมาะสมและป้องกันการเรียก API ของสภาพแวดล้อมจริงโดยไม่ตั้งใจ

import os
import pytest

@pytest.fixture(autouse=True)
def test_environment(monkeypatch):
    'Force test configuration for all tests'
    monkeypatch.setenv('ENV', 'test')
    monkeypatch.setenv('AGENT_MODEL', 'gpt-4o-mini')
    monkeypatch.setenv('AGENT_MAX_STEPS', '5')  # short loops in tests
    monkeypatch.setenv('LOG_LEVEL', 'DEBUG')
    monkeypatch.setenv('CACHE_ENABLED', 'false')
    # Use a fake API key — tests should mock all LLM calls
    monkeypatch.setenv('OPENAI_API_KEY', 'test-key-not-real')

# This fixture runs before every test automatically
# Tests cannot accidentally use production settings

แบบทดสอบความรู้: โปรไฟล์การกำหนดค่า

ทดสอบความเข้าใจเกี่ยวกับโปรไฟล์การกำหนดค่าเฉพาะสภาพแวดล้อม

สรุป: โปรไฟล์การกำหนดค่าสำหรับการพัฒนาและสภาพแวดล้อมจริง

ขณะนี้คุณมีกลยุทธ์การจัดการการกำหนดค่าสำหรับเอเจนต์ในสภาพแวดล้อมต่าง ๆ อย่างครบถ้วนแล้ว:

  • ใช้ตัวแปร ENV เพื่อระบุบริบทการนำไปใช้งาน
  • กำหนดคลาสการกำหนดค่าแยกตามสภาพแวดล้อมพร้อมค่าเริ่มต้นที่เหมาะสม
  • ใช้โรงงานการกำหนดค่าเพื่อเลือกโปรไฟล์ที่เหมาะสมโดยอัตโนมัติ
  • ใช้ pydantic-settings สำหรับการกำหนดค่าที่ปลอดภัยด้านชนิดข้อมูลและผ่านการตรวจสอบ
  • ใช้แฟล็กคุณลักษณะเพื่อเปิดหรือปิดคุณลักษณะตามสภาพแวดล้อม
  • ตรวจสอบและพิมพ์การกำหนดค่าเมื่อเริ่มต้น เพื่อให้ผู้ปฏิบัติงานยืนยันการตั้งค่าได้
  • บังคับใช้การกำหนดค่าการทดสอบใน fixture ของ pytest เพื่อป้องกันการเรียกใช้งานในสภาพแวดล้อมจริง

การจัดการการกำหนดค่าที่ดีทำให้โค้ดชุดเดียวกันสามารถนำไปใช้งานอย่างปลอดภัยในสภาพแวดล้อมเพื่อการพัฒนา การจัดเตรียม และสภาพแวดล้อมจริง

คำถามที่พบบ่อย

บทเรียน “โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง”

การกำหนดค่าเฉพาะสภาพแวดล้อม แฟล็กฟีเจอร์ และการนำไปใช้งานเป็นระยะ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม

ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ตัวแปรสภาพแวดล้อมสำหรับตัวแทน
  2. ไฟล์ .env และ python-dotenv
  3. การหมุนเวียนข้อมูลลับและความปลอดภัย
  4. โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง
← กลับไปที่ AI Agents