AI-agenter · Lektion

Skapa kommandoradsgränssnitt för agenter

argparse, click och Typer för hantering av argument i agenters CLI.

Lektion 1 av 413 steg

Skapa kommandoradsgränssnitt för agenter är en gratis lektion i AI-agenter på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter innehåller totalt 4 lektioner.

Varför bygga ett CLI för agenten

Ett kommandoradsgränssnitt (CLI) gör agenten tillgänglig från en terminal, möjlig att skripta i pipelines och enkel att testa utan ett webbgränssnitt. Många agenter i produktion distribueras som CLI-verktyg.

Python har tre utmärkta bibliotek för att bygga CLI:er: argparse (standardbiblioteket), Typer och Click.

argparse: alternativet i standardbiblioteket

argparse ingår i Python — ingen installation krävs. Använd ArgumentParser() för att definiera gränssnittet, add_argument() för att deklarera parametrar och parse_args() för att behandla dem.

import argparse

def main(argv=None):
    parser = argparse.ArgumentParser(
        description='AI Agent CLI — ask questions and get answers'
    )
    parser.add_argument('--query', type=str, required=True, help='The question to ask the agent')
    parser.add_argument('--model', type=str, default='gpt-4o-mini', help='OpenAI model to use (default: gpt-4o-mini)')
    args = parser.parse_args(argv)

    print(f'Querying agent with: {args.query}')
    print(f'Using model: {args.model}')

if __name__ == '__main__':
    main(['--query', 'What is the weather today?'])

Köra ett argparse-CLI och automatiskt genererad hjälp

argparse genererar automatiskt ett --help-meddelande utifrån era argumentdefinitioner. Kör python agent_cli.py --help för att visa det. Saknade obligatoriska argument ger automatiskt användbara felmeddelanden.

# How users invoke the CLI:
# python agent_cli.py --query 'What is the weather in Paris?'
# python agent_cli.py --query 'Summarize this' --model gpt-4o
# python agent_cli.py --help

# Auto-generated help output:
# usage: agent_cli.py [-h] --query QUERY [--model MODEL]
#
# AI Agent CLI -- ask questions and get answers
#
# options:
#   -h, --help     show this help message and exit
#   --query QUERY  The question to ask the agent
#   --model MODEL  OpenAI model to use (default: gpt-4o-mini)

print('argparse generates help text automatically from your definitions')

Typer: Modernt CLI med typanvisningar

Typer bygger CLI:er från Pythons typanvisningar — mindre standardkod än argparse. Installera med pip install typer. Funktionsparametrar blir automatiskt CLI-argument.

# pip install typer
import typer

app = typer.Typer(help='AI Agent CLI')

@app.command()
def ask(
    query: str = typer.Option(..., '--query', '-q', help='Question for the agent'),
    model: str = typer.Option('gpt-4o-mini', '--model', '-m', help='Model to use'),
    verbose: bool = typer.Option(False, '--verbose', '-v', help='Show reasoning steps')
):
    typer.echo(f'Query: {query}')
    typer.echo(f'Model: {model}')
    if verbose:
        typer.echo('Verbose mode enabled')
    # result = run_agent(query, model=model, verbose=verbose)

if __name__ == '__main__':
    app()

Click: Dekoratorbaserat CLI-ramverk

Click använder dekoratorer för att definiera CLI-kommandon och alternativ. Installera med pip install click. Det erbjuder omfattande funktioner som kommandogrupper, uppmaningar och förloppsindikatorer.

# pip install click
import click

@click.command()
@click.option('--query', '-q', required=True, help='Question for the agent')
@click.option('--model', '-m', default='gpt-4o-mini', help='LLM model to use')
@click.option('--output', '-o', type=click.Path(), help='Save output to file')
def ask(query: str, model: str, output: str):
    click.echo(f'Sending: {query}')
    # result = run_agent(query, model=model)
    # click.echo(result['answer'])

    if output:
        with open(output, 'w') as f:
            f.write('result["answer"]')
        click.echo(f'Saved to {output}')

if __name__ == '__main__':
    ask()

Lägga till underkommandon

När din agent växer kan du organisera funktionaliteten i underkommandon som agent ask, agent search och agent history. Både Click och Typer har inbyggt stöd för underkommandogrupper.

import typer

app = typer.Typer(help='AI Research Agent')

@app.command()
def ask(query: str = typer.Argument(..., help='Question to ask')):
    'Ask the agent a question'
    typer.echo(f'Asking: {query}')

@app.command()
def search(topic: str = typer.Argument(..., help='Topic to research')):
    'Search and summarize a topic'
    typer.echo(f'Researching: {topic}')

@app.command()
def history(limit: int = typer.Option(10, help='Number of past queries to show')):
    'Show recent query history'
    typer.echo(f'Showing last {limit} queries')

if __name__ == '__main__':
    app()

# Usage: python agent.py ask 'What is AI?'
#        python agent.py search 'Python async'
#        python agent.py history --limit 5

Läsa från stdin för indata via pipe

En CLI-agent som läser från stdin kan användas i Unix-pipelines. Använd sys.stdin eller Clicks stdin-argumenttyp för att ta emot innehåll via pipe.

import sys
import click

@click.command()
@click.argument('input', default='-', type=click.File('r'))
@click.option('--task', default='summarize', help='Task: summarize, translate, or analyze')
def process(input, task: str):
    text = input.read().strip()
    if not text:
        click.echo('Error: no input provided', err=True)
        raise SystemExit(1)

    click.echo(f'Task: {task}')
    click.echo(f'Input length: {len(text)} chars')
    # result = agent.run(task=task, content=text)
    # click.echo(result)

# Usage:
# echo 'Hello world' | python agent_cli.py --task translate
# cat article.txt | python agent_cli.py --task summarize
if __name__ == '__main__':
    process()

Förloppsindikatorer för långvariga uppgifter

Agentens uppgifter kan ta flera sekunder. Visa en snurra eller ett förloppsmeddelande så att användarna vet att agenten arbetar. Typer har inbyggt stöd för förlopp via biblioteket rich.

import typer
from time import sleep

app = typer.Typer()

@app.command()
def research(topic: str = typer.Argument(...)):
    typer.echo(f'Researching: {topic}')

    with typer.progressbar(range(5), label='Gathering sources') as progress:
        for i in progress:
            sleep(0.5)  # simulate work

    typer.echo('Done!')
    typer.echo('Result: [mocked research result]')

# Or with a spinner from rich:
# from rich.console import Console
# console = Console()
# with console.status('Thinking...'):
#     result = agent.run(topic)
# console.print(result)

if __name__ == '__main__':
    app()

Utdataformatering: JSON eller vanlig text

Låt användarna välja mellan utdataformat som är läsbara för människor eller maskiner. Flaggan --json är användbar när agentens utdata ska skickas vidare till andra verktyg.

import json
import typer

app = typer.Typer()

@app.command()
def ask(
    query: str = typer.Argument(...),
    as_json: bool = typer.Option(False, '--json', help='Output as JSON')
):
    result = {
        'query': query,
        'answer': 'Paris is the capital of France.',
        'confidence': 0.98,
        'sources': ['https://wikipedia.org/France']
    }

    if as_json:
        typer.echo(json.dumps(result, indent=2))
    else:
        typer.echo(f'Answer: {result["answer"]}')
        typer.echo(f'Sources: {', '.join(result["sources"])}')

if __name__ == '__main__':
    app()

Felhantering i CLI-agenter

Avsluta med en kod som inte är noll vid fel, så att anropande skript kan upptäcka misslyckanden. Använd typer.echo(..., err=True) eller click.echo(..., err=True) för att skriva felmeddelanden till stderr.

import sys
import typer

app = typer.Typer()

@app.command()
def ask(query: str = typer.Argument(...)):
    try:
        # result = agent.run(query)
        result = {'status': 'ok', 'answer': 'Result here'}

        if result['status'] != 'ok':
            typer.echo(f'Agent error: {result.get("error")}', err=True)
            raise typer.Exit(code=1)

        typer.echo(result['answer'])

    except Exception as e:
        typer.echo(f'Unexpected error: {e}', err=True)
        raise typer.Exit(code=2)

# Exit codes: 0 = success, 1 = agent error, 2 = unexpected error
# These allow shell scripts to handle failures:
# python agent.py 'query' || echo 'Agent failed'
if __name__ == '__main__':
    app()

Göra agenten till ett installerbart CLI-verktyg

Använd en entry point i pyproject.toml för att göra agenten tillgänglig som ett systemkommando. Efter pip install -e . kan användarna köra myagent ask 'question' direkt från valfri katalog.

# pyproject.toml
# [project]
# name = 'myagent'
# version = '0.1.0'
# dependencies = ['typer', 'openai', 'httpx']
#
# [project.scripts]
# myagent = 'myagent.cli:app'

# After pip install -e .:
# myagent ask 'What is AI?'
# myagent search 'Python tutorials'
# myagent --help

# This is how production CLI agents like 'gh', 'poetry', and 'ruff' work
print('Entry points turn your Python module into a system CLI command')

Kunskapskontroll: CLI-agentgränssnitt

Testa dina kunskaper om att bygga CLI-gränssnitt för agenter.

Sammanfattning: Bygga CLI-agentgränssnitt

Nu kan du bygga professionella CLI-gränssnitt för dina agenter:

  • Använd argparse för CLI:er utan externa beroenden (standardbiblioteket)
  • Använd typer för rena CLI:er som styrs av typanvisningar
  • Använd click för funktionsrika, dekoratorbaserade CLI:er
  • Organisera stora agenter med underkommandon
  • Stöd stdin för integration med pipelines
  • Använd flaggor med --json för maskinläsbara utdata
  • Avsluta med koder som inte är noll vid fel för kompatibilitet med skalskript
Gratis att börja

Lär dig AI-agenter med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
60
Lektioner
239

Vanliga frågor

Är lektionen ”Skapa kommandoradsgränssnitt för agenter” gratis?

Ja – hela texten till ”Skapa kommandoradsgränssnitt för agenter” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter innehåller totalt 4 lektioner.

Vad lär jag mig i ”Skapa kommandoradsgränssnitt för agenter”?

argparse, click och Typer för hantering av argument i agenters CLI. Ni övar på AI-agenter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig AI-agenter?

Du behöver inga förkunskaper. Utbildningen i AI-agenter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Skapa kommandoradsgränssnitt för agenter”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här AI-agenter-lektionen?

Ja. Varje AI-agenter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skapa kommandoradsgränssnitt för agenter
  2. Interaktiva agenter i REPL-stil
  3. Argumentparsning och hjälptext
  4. Strömmande utdata i CLI-agenter
← Tillbaka till AI-agenter