Profil Konfigurasi untuk Pengembangan dan Produksi
Konfigurasi khusus lingkungan, penanda fitur, dan penerapan bertahap.
Profil Konfigurasi untuk Pengembangan dan Produksi adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar AI Agents, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus AI Agents mencakup 4 pelajaran total.
Mengapa Profil Config Penting
Agen produksi dan agen pengembangan seharusnya berperilaku berbeda: tingkat pencatatan yang berbeda, tingkatan model yang berbeda (biaya dibandingkan kualitas), basis data yang berbeda, serta batas laju yang berbeda. Profil konfigurasi membuatnya otomatis—satu variabel lingkungan dapat mengubah semua pengaturan sekaligus.
Mendeteksi Lingkungan dengan Variabel ENV
Pola standarnya adalah membaca variabel ENV (atau ENVIRONMENT) yang mengidentifikasi konteks penerapan saat ini. Kode Anda kemudian memilih profil konfigurasi yang sesuai berdasarkan nilai tersebut.
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 developmentKelas Config untuk Setiap Lingkungan
Tentukan kelas konfigurasi dasar dan subkelas untuk setiap lingkungan. Setiap subkelas mengganti nilai yang berbeda. Cara ini lebih mudah dibaca dan lebih aman dari sisi tipe dibandingkan kamus besar yang berisi percabangan bersyarat.
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}')
Pabrik Config: Memilih Profil yang Tepat
Fungsi pabrik konfigurasi membaca variabel ENV dan mengembalikan kelas konfigurasi yang sesuai. Fungsi tunggal ini adalah satu-satunya tempat yang mengetahui logika pergantian lingkungan.
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 variablePengaturan Pydantic untuk Konfigurasi Bertipe
pydantic-settings menyediakan cara yang andal dan aman dari sisi tipe untuk menentukan konfigurasi. Pustaka ini membaca variabel lingkungan secara otomatis, memvalidasi tipe, dan dapat memuat data dari berkas .env. Pasang dengan 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 missingPengaturan Pydantic dengan Penggantian Khusus Lingkungan
Gabungkan Pengaturan Pydantic dengan properti terhitung untuk menerapkan nilai bawaan khusus lingkungan yang masih dapat diganti oleh variabel lingkungan.
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'Penanda Fitur untuk Setiap Lingkungan
Gunakan profil konfigurasi untuk mengaktifkan atau menonaktifkan fitur di setiap lingkungan. Misalnya, aktifkan antarmuka debug hanya dalam pengembangan, gunakan pembayaran nyata hanya dalam produksi, dan arahkan ke layanan terisolasi dalam lingkungan pra-produksi.
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}')Validasi Konfigurasi saat Memulai
Validasi semua konfigurasi saat memulai dan tampilkan ringkasannya agar pengelola dapat memverifikasi bahwa agen telah dikonfigurasi dengan benar sebelum mulai memproses. Cara ini mencegah kesalahan konfigurasi yang tidak terlihat dalam produksi.
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)
Mengganti Nilai Konfigurasi per Lingkungan
Dalam alur CI/CD, ganti nilai konfigurasi tertentu tanpa mengubah seluruh profil. Teruskan variabel individual bersama variabel ENV untuk menyesuaikan pengaturan pada penerapan tertentu.
# 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}')Mendokumentasikan Profil Konfigurasi untuk Rekan Satu Tim
Dokumentasikan profil konfigurasi Anda dengan jelas—dalam komentar kode, README, atau keduanya. Pengembang baru perlu memahami perubahan antarlingkungan agar dapat melakukan penerapan dengan yakin.
# 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')Config dalam Pengujian: Profil Pengujian Wajib
Pengujian harus selalu dijalankan dengan konfigurasi pengujian tertentu—jangan pernah menggunakan pengaturan produksi. Buat fixture konfigurasi pengujian yang menerapkan pengaturan yang sesuai dan mencegah panggilan API produksi yang tidak disengaja.
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 settingsPemeriksaan Pengetahuan: Profil Konfigurasi
Uji pemahaman Anda tentang profil konfigurasi khusus lingkungan.
Ringkasan: Profil Konfigurasi untuk Pengembangan dan Produksi
Anda kini memiliki strategi pengelolaan konfigurasi yang lengkap untuk agen di berbagai lingkungan:
- Gunakan variabel
ENVuntuk mengidentifikasi konteks penerapan - Tentukan kelas konfigurasi untuk setiap lingkungan dengan nilai bawaan yang sesuai
- Gunakan pabrik konfigurasi untuk memilih profil yang tepat secara otomatis
- Gunakan
pydantic-settingsuntuk konfigurasi yang aman dari sisi tipe dan tervalidasi - Gunakan penanda fitur untuk mengaktifkan atau menonaktifkan fitur di setiap lingkungan
- Validasi dan tampilkan konfigurasi saat memulai agar pengelola dapat memverifikasi pengaturan
- Paksa penggunaan konfigurasi pengujian dalam fixture pytest untuk mencegah panggilan ke produksi
Pengelolaan konfigurasi yang baik memungkinkan basis kode yang sama diterapkan dengan aman ke lingkungan pengembangan, pra-produksi, dan produksi.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Profil Konfigurasi untuk Pengembangan dan Produksi” gratis?
Ya — teks lengkap “Profil Konfigurasi untuk Pengembangan dan Produksi” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus AI Agents, upgrade ke CoddyKit PRO. Kursus AI Agents mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Profil Konfigurasi untuk Pengembangan dan Produksi”?
Konfigurasi khusus lingkungan, penanda fitur, dan penerapan bertahap. Kamu berlatih AI Agents dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai AI Agents?
Tidak diperlukan pengalaman sebelumnya. AI Agents di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Profil Konfigurasi untuk Pengembangan dan Produksi” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran AI Agents ini?
Ya. Setiap pelajaran AI Agents menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Variabel Lingkungan untuk Agen
- File .env dan python-dotenv
- Rotasi Rahasia dan Keamanan
- Profil Konfigurasi untuk Pengembangan dan Produksi