0Pricing
AI Agents · Ders

Komut Satırı Aracı Arabirimleri Oluşturma

Aracı CLI bağımsız değişkenlerini işlemek için argparse, click ve Typer.

Komut Satırı Aracı Arabirimleri Oluşturma, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Aracınız İçin CLI Neden Oluşturmalısınız?

Komut satırı arayüzü (CLI), aracınıza bir uçbirimden erişilmesini, işlem hatlarında betiklerle çalıştırılabilmesini ve web arayüzü olmadan kolayca sınanabilmesini sağlar. Üretim ortamlarındaki birçok aracı CLI aracı olarak dağıtılır.

Python'da CLI oluşturmak için üç mükemmel kütüphane vardır: argparse (standart kütüphane), Typer ve Click.

argparse: Standart Kütüphane Seçeneği

argparse, Python'un içinde yer alır — kurulum gerektirmez. Arayüzünüzü tanımlamak için ArgumentParser(), parametreleri bildirmek için add_argument() ve bunları işlemek için parse_args() kullanın.

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

argparse CLI'sini Çalıştırma ve Otomatik Oluşturulan Yardım

argparse, bağımsız değişken tanımlarınızdan otomatik olarak bir --help iletisi oluşturur. Görmek için python agent_cli.py --help komutunu çalıştırın. Eksik zorunlu bağımsız değişkenler otomatik olarak yararlı hata iletileri oluşturur.

# 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: Tür İpuçlarıyla Modern CLI

Typer, Python tür ipuçlarından CLI arayüzleri oluşturur; argparse'e göre daha az kalıp kod gerektirir. pip install typer komutuyla yükleyin. İşlev parametreleri otomatik olarak CLI bağımsız değişkenlerine dönüşür.

# 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: Dekoratör Tabanlı CLI Çerçevesi

Click, CLI komutlarını ve seçeneklerini tanımlamak için dekoratörleri kullanır. pip install click komutuyla yükleyin. Komut grupları, istemler ve ilerleme çubukları gibi zengin özellikler sunar.

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

Alt Komutlar Ekleme

Ajanınız büyüdükçe işlevleri agent ask, agent search ve agent history gibi alt komutlar halinde düzenleyin. Hem Click hem de Typer, alt komut gruplarını yerleşik olarak destekler.

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

Yönlendirilmiş Girdi için stdin'den Okuma

stdin'den okuyan bir CLI ajanı, Unix işlem hatlarında kullanılabilir. Yönlendirilmiş içeriği kabul etmek için sys.stdin veya Click'in stdin bağımsız değişken türünü kullanın.

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

Uzun Görevler için İlerleme Göstergeleri

Ajan görevlerinin tamamlanması birkaç saniye sürebilir. Kullanıcıların ajanın çalıştığını anlaması için dönen bir gösterge veya ilerleme iletisi gösterin. Typer, rich kitaplığı aracılığıyla yerleşik ilerleme desteği sunar.

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

Çıktı Biçimlendirme: JSON ve Düz Metin

Kullanıcıların insan tarafından okunabilir ve makine tarafından okunabilir çıktı biçimleri arasında seçim yapmasına izin verin. --json seçeneği, ajan çıktısını diğer araçlara yönlendirmek için kullanışlıdır.

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

CLI Ajanlarında Hata Yönetimi

Çağıran betiklerin başarısızlıkları algılayabilmesi için hatalarda sıfır olmayan bir kodla çıkın. Hata iletilerini stderr'e yazmak için typer.echo(..., err=True) veya click.echo(..., err=True) kullanın.

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

Ajanınızı Yüklenebilir bir CLI Aracına Dönüştürme

Ajanınızı sistem komutu olarak kullanılabilir hale getirmek için pyproject.toml giriş noktası kullanın. pip install -e . işleminden sonra kullanıcılar, herhangi bir dizinden doğrudan myagent ask 'question' komutunu çalıştırabilir.

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

Bilgi Kontrolü: CLI Ajanı Arayüzleri

Ajanlar için CLI arayüzleri oluşturma konusundaki anlayışınızı sınayın.

Özet: CLI Ajanı Arayüzleri Oluşturma

Artık ajanlarınız için profesyonel CLI arayüzleri oluşturabilirsiniz:

  • Sıfır bağımlılıklı CLI'ler (standart kitaplık) için argparse kullanın
  • Sade, tür ipuçlarıyla yönlendirilen CLI'ler için typer kullanın
  • Zengin özellikli, dekoratör tabanlı CLI'ler için click kullanın
  • Büyük ajanları alt komutlarla düzenleyin
  • İşlem hattı tümleştirmesi için stdin desteği sağlayın
  • Makine tarafından okunabilir çıktı için --json seçeneklerini kullanın
  • Kabuk betikleriyle uyumluluk için hatalarda sıfır olmayan kodlarla çıkın

Sıkça Sorulan Sorular

“Komut Satırı Aracı Arabirimleri Oluşturma” dersi ücretsiz mi?

Evet — “Komut Satırı Aracı Arabirimleri Oluşturma” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Komut Satırı Aracı Arabirimleri Oluşturma” dersinde ne öğreneceğim?

Aracı CLI bağımsız değişkenlerini işlemek için argparse, click ve Typer. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Komut Satırı Aracı Arabirimleri Oluşturma” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Komut Satırı Aracı Arabirimleri Oluşturma
  2. Etkileşimli REPL Tarzı Aracılar
  3. Bağımsız Değişken Ayrıştırma ve Yardım Metni
  4. CLI Aracılarında Akış Çıktısı
← AI Agents Sayfasına Dön