0Pricing
AI Agents · Pelajaran

Membangun Antarmuka Agen Baris Perintah

argparse, click, dan Typer untuk menangani argumen CLI agen.

Membangun Antarmuka Agen Baris Perintah adalah pelajaran AI Agents gratis di CoddyKit. Ini adalah pelajaran 1 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 Membangun CLI untuk Agen Anda?

Antarmuka baris perintah (CLI) membuat agen Anda dapat diakses dari terminal, dapat dijalankan melalui skrip dalam alur kerja, dan mudah diuji tanpa antarmuka web. Banyak agen produksi diterapkan sebagai alat CLI.

Python memiliki tiga pustaka yang sangat baik untuk membangun CLI: argparse (pustaka standar), Typer, dan Click.

argparse: Pilihan Pustaka Standar

argparse sudah tersedia di dalam Python — tidak diperlukan instalasi. Gunakan ArgumentParser() untuk mendefinisikan antarmuka, add_argument() untuk menyatakan parameter, dan parse_args() untuk memprosesnya.

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?'])

Menjalankan CLI argparse dan Bantuan yang Dibuat Otomatis

argparse otomatis membuat pesan --help dari definisi argumen Anda. Jalankan python agent_cli.py --help untuk melihatnya. Argumen wajib yang tidak disertakan akan secara otomatis menghasilkan pesan kesalahan yang informatif.

# 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: CLI Modern dengan Petunjuk Tipe

Typer membuat CLI dari petunjuk tipe Python — boilerplate lebih sedikit daripada argparse. Pasang dengan pip install typer. Parameter fungsi otomatis menjadi argumen CLI.

# 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: Kerangka Kerja CLI Berbasis Dekorator

Click menggunakan dekorator untuk mendefinisikan perintah dan opsi CLI. Pasang dengan pip install click. Click menyediakan fitur lengkap seperti grup perintah, permintaan masukan, dan bilah kemajuan.

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

Menambahkan Subperintah

Saat agen Anda berkembang, atur fungsionalitas ke dalam subperintah seperti agent ask, agent search, dan agent history. Click dan Typer sama-sama mendukung grup subperintah secara bawaan.

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

Membaca dari stdin untuk Masukan melalui Pipa

Agen CLI yang membaca dari stdin dapat digunakan dalam alur Unix. Gunakan sys.stdin atau tipe argumen stdin milik Click untuk menerima konten yang disalurkan melalui pipa.

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()

Indikator Kemajuan untuk Tugas Panjang

Tugas agen dapat memerlukan waktu beberapa detik. Tampilkan indikator putar atau pesan kemajuan agar pengguna tahu bahwa agen sedang bekerja. Typer memiliki dukungan kemajuan bawaan melalui pustaka 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()

Pemformatan Keluaran: JSON vs. Teks Biasa

Izinkan pengguna memilih antara format keluaran yang mudah dibaca manusia dan yang dapat dibaca mesin. Flag --json berguna untuk menyalurkan keluaran agen ke alat lain.

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()

Penanganan Kesalahan pada Agen CLI

Keluar dengan kode bukan nol saat terjadi kesalahan agar skrip pemanggil dapat mendeteksi kegagalan. Gunakan typer.echo(..., err=True) atau click.echo(..., err=True) untuk menulis pesan kesalahan ke 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()

Menjadikan Agen Anda sebagai Alat CLI yang Dapat Dipasang

Gunakan titik entri pyproject.toml agar agen Anda tersedia sebagai perintah sistem. Setelah pip install -e ., pengguna dapat menjalankan myagent ask 'question' langsung dari direktori mana pun.

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

Pemeriksaan Pemahaman: Antarmuka Agen CLI

Uji pemahaman Anda tentang pembuatan antarmuka CLI untuk agen.

Ringkasan: Membangun Antarmuka Agen CLI

Sekarang Anda dapat membangun antarmuka CLI profesional untuk agen Anda:

  • Gunakan argparse untuk CLI tanpa dependensi tambahan (pustaka standar)
  • Gunakan typer untuk CLI yang bersih dan digerakkan oleh petunjuk tipe
  • Gunakan click untuk CLI kaya fitur berbasis dekorator
  • Atur agen besar dengan subperintah
  • Dukung masukan melalui pipa untuk integrasi alur
  • Gunakan flag --json untuk keluaran yang dapat dibaca mesin
  • Keluar dengan kode bukan nol saat terjadi kesalahan agar kompatibel dengan skrip shell

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Membangun Antarmuka Agen Baris Perintah” gratis?

Ya — teks lengkap “Membangun Antarmuka Agen Baris Perintah” 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 “Membangun Antarmuka Agen Baris Perintah”?

argparse, click, dan Typer untuk menangani argumen CLI agen. 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 1 dari 4.

Berapa lama pelajaran “Membangun Antarmuka Agen Baris Perintah” 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. Membangun Antarmuka Agen Baris Perintah
  2. Agen Interaktif Bergaya REPL
  3. Penguraian Argumen dan Teks Bantuan
  4. Mengalirkan Output dalam Agen CLI
← Kembali ke AI Agents