Tekoälyagentit · Oppitunti

Kehitys- ja tuotantoympäristön asetukset

Ympäristökohtaiset asetukset, feature flagit ja vaiheistetut julkaisut

Oppitunti 4/413 vaihetta

Kehitys- ja tuotantoympäristön asetukset on ilmainen Tekoälyagentit-oppitunti CoddyKitissä. Tämä on oppitunti 4/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Miksi konfiguraatioprofiilit ovat tärkeitä

Tuotantoagentin ja kehitysagentin pitäisi toimia eri tavoin: niillä pitäisi olla eri lokitustasot, eri mallit (kustannukset ja laatu), eri tietokannat ja eri pyyntörajoitukset. Konfiguraatioprofiilit tekevät tästä automaattista — yksi ympäristömuuttuja vaihtaa kaikki asetukset kerralla.

Ympäristön tunnistaminen ENV-muuttujan avulla

Vakiintunut toimintatapa on lukea ENV- tai ENVIRONMENT-muuttuja, joka ilmaisee nykyisen käyttöönottokontekstin. Koodisi valitsee sitten tämän arvon perusteella sopivan konfiguraatioprofiilin.

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

Konfiguraatioluokat ympäristökohtaisesti

Määritä peruskonfiguraatioluokka ja kullekin ympäristölle oma aliluokkansa. Kukin aliluokka korvaa ne arvot, jotka poikkeavat perusasetuksista. Tämä on luettavampaa ja tyyppiturvallisempaa kuin suuri ehdollisuuksia sisältävä sanakirja.

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}')

Konfiguraatiotehdas: oikean profiilin valitseminen

Konfiguraatiotehdasfunktio lukee ENV-muuttujan ja palauttaa sopivan konfiguraatioluokan. Tämä on ainoa funktio, jonka tarvitsee tuntea ympäristön vaihtamiseen liittyvä logiikka.

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 Settings tyyppiturvalliseen konfiguraatioon

pydantic-settings tarjoaa tehokkaan ja tyyppiturvallisen tavan määrittää konfiguraatio. Se lukee ympäristömuuttujat automaattisesti, tarkistaa tyypit ja voi ladata asetuksia .env-tiedostoista. Asenna se komennolla 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 Settings ympäristökohtaisilla ohituksilla

Yhdistä Pydantic Settings laskettuihin ominaisuuksiin, jotta voit käyttää ympäristökohtaisia oletusarvoja, jotka voidaan silti ohittaa ympäristömuuttujilla.

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'

Ominaisuusliput ympäristökohtaisesti

Käytä konfiguraatioprofiileja ominaisuuksien ottamiseen käyttöön tai poistamiseen käytöstä ympäristökohtaisesti. Ota esimerkiksi debug-käyttöliittymä käyttöön vain kehitysympäristössä, käytä oikeita maksuja vain tuotannossa ja osoita staging-ympäristössä hiekkalaatikkopalveluihin.

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}')

Konfiguraation tarkistaminen käynnistyksen yhteydessä

Tarkista koko konfiguraatio käynnistyksen yhteydessä ja tulosta yhteenveto, jotta ylläpitäjät voivat varmistaa agentin oikean konfiguroinnin ennen käsittelyn aloittamista. Näin vältetään tuotannon hiljaiset virhekonfiguraatiot.

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)

Konfiguraatioarvojen ohittaminen ympäristökohtaisesti

Ohita CI/CD-putkissa yksittäisiä konfiguraatioarvoja muuttamatta koko profiilia. Välitä yksittäiset muuttujat ENV-muuttujan rinnalla, jotta voit mukauttaa tietyn käyttöönoton asetuksia.

# 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}')

Konfiguraatioprofiilien dokumentointi tiimikavereille

Dokumentoi konfiguraatioprofiilisi selkeästi joko koodikommenteissa, README-tiedostossa tai molemmissa. Uusien kehittäjien on ymmärrettävä, mikä ympäristöjen välillä muuttuu, jotta he voivat tehdä käyttöönottoja luottavaisin mielin.

# 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')

Konfiguraatio testeissä: pakotettu testiprofiili

Testien pitäisi aina käyttää tiettyä testikonfiguraatiota — ei koskaan tuotantoasetuksia. Luo testikonfiguraatiota käyttävä fixture, joka ottaa käyttöön asianmukaiset asetukset ja estää tahattomat tuotannon API-kutsut.

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

Tietotesti: konfiguraatioprofiilit

Testaa, miten hyvin ymmärrät ympäristökohtaiset konfiguraatioprofiilit.

Kertaus: kehitys- ja tuotantoympäristöjen konfiguraatioprofiilit

Sinulla on nyt kattava agenttien konfiguraationhallintastrategia eri ympäristöihin:

  • Käytä ENV-muuttujaa käyttöönottokontekstin tunnistamiseen
  • Määritä kullekin ympäristölle oma konfiguraatioluokka asianmukaisine oletusarvoineen
  • Valitse oikea profiili automaattisesti konfiguraatiotehtaan avulla
  • Käytä pydantic-settings-pakettia tyyppiturvalliseen ja tarkistettuun konfiguraatioon
  • Käytä ominaisuuslippuja ominaisuuksien ottamiseen käyttöön tai poistamiseen käytöstä ympäristökohtaisesti
  • Tarkista ja tulosta konfiguraatio käynnistyksen yhteydessä, jotta ylläpitäjät voivat varmistaa asetukset
  • Pakota pytest-fixtureissä testikonfiguraation käyttö tuotantokutsujen estämiseksi

Hyvä konfiguraationhallinta mahdollistaa saman koodipohjan turvallisen käyttöönoton kehitys-, staging- ja tuotantoympäristöissä.

Aloita maksutta

Opi Tekoälyagentit tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
60
Oppitunnit
239

Usein kysytyt kysymykset

Onko oppitunti ”Kehitys- ja tuotantoympäristön asetukset” ilmainen?

Kyllä – oppitunnin ”Kehitys- ja tuotantoympäristön asetukset” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Kehitys- ja tuotantoympäristön asetukset”?

Ympäristökohtaiset asetukset, feature flagit ja vaiheistetut julkaisut Harjoittelet Tekoälyagentit-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 4/4.

Kuinka kauan ”Kehitys- ja tuotantoympäristön asetukset”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Agenttien ympäristömuuttujat
  2. .env-tiedostot ja python-dotenv
  3. Salaisuuksien kierrätys ja turvallisuus
  4. Kehitys- ja tuotantoympäristön asetukset
← Takaisin: Tekoälyagentit