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 5Membaca 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
argparseuntuk CLI tanpa dependensi tambahan (pustaka standar) - Gunakan
typeruntuk CLI yang bersih dan digerakkan oleh petunjuk tipe - Gunakan
clickuntuk CLI kaya fitur berbasis dekorator - Atur agen besar dengan subperintah
- Dukung masukan melalui pipa untuk integrasi alur
- Gunakan flag
--jsonuntuk 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
- Membangun Antarmuka Agen Baris Perintah
- Agen Interaktif Bergaya REPL
- Penguraian Argumen dan Teks Bantuan
- Mengalirkan Output dalam Agen CLI