Skapa kommandoradsgränssnitt för agenter
argparse, click och Typer för hantering av argument i agenters CLI.
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 5Lä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
argparseför CLI:er utan externa beroenden (standardbiblioteket) - Använd
typerför rena CLI:er som styrs av typanvisningar - Använd
clickför funktionsrika, dekoratorbaserade CLI:er - Organisera stora agenter med underkommandon
- Stöd stdin för integration med pipelines
- Använd flaggor med
--jsonför maskinläsbara utdata - Avsluta med koder som inte är noll vid fel för kompatibilitet med skalskript
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
- Skapa kommandoradsgränssnitt för agenter
- Interaktiva agenter i REPL-stil
- Argumentparsning och hjälptext
- Strömmande utdata i CLI-agenter