โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง
การกำหนดค่าเฉพาะสภาพแวดล้อม แฟล็กฟีเจอร์ และการนำไปใช้งานเป็นระยะ
โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง เป็นบทเรียน 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ตัวแปรสภาพแวดล้อมสำหรับตัวแทน
- ไฟล์ .env และ python-dotenv
- การหมุนเวียนข้อมูลลับและความปลอดภัย
- โปรไฟล์การกำหนดค่าสำหรับสภาพแวดล้อมพัฒนาและใช้งานจริง