0Pricing
AI Agents · Pelajaran

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 development

Kelas 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 variable

Pengaturan 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 missing

Pengaturan 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 settings

Pemeriksaan 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 ENV untuk 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-settings untuk 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

  1. Variabel Lingkungan untuk Agen
  2. File .env dan python-dotenv
  3. Rotasi Rahasia dan Keamanan
  4. Profil Konfigurasi untuk Pengembangan dan Produksi
← Kembali ke AI Agents