Análisis de argumentos y texto de ayuda
Argumentos obligatorios y opcionales, validación de tipos y ayuda generada automáticamente.
Análisis de argumentos y texto de ayuda es una lección gratuita de AI Agents en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AI Agents, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AI Agents incluye 4 lecciones en total.
Un buen diseño de CLI comienza con buenos argumentos
Una interfaz de argumentos bien diseñada para un agente de CLI permite que los usuarios descubran cómo utilizar la herramienta consultando únicamente --help. Cada argumento debe tener un nombre, un tipo, un valor predeterminado y una descripción claros.
Los argumentos con nombres poco claros o sin documentación hacen que las herramientas sean frustrantes de utilizar y difíciles de mantener.
Argumentos obligatorios y opcionales
Los argumentos obligatorios deben proporcionarse; la CLI termina con un error si faltan. Los argumentos opcionales tienen un valor default= y pueden omitirse. Decidir cuáles pertenecen a cada categoría influye en la experiencia de usuario de la herramienta.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
# Required: no default, must be provided
parser.add_argument(
'--query', '-q',
type=str,
required=True,
help='Question to send to the agent'
)
# Optional: has a default, can be omitted
parser.add_argument(
'--model', '-m',
type=str,
default='gpt-4o-mini',
help='Model name (default: gpt-4o-mini)'
)
parser.add_argument(
'--max-tokens',
type=int,
default=1000,
help='Maximum tokens in response (default: 1000)'
)
args = parser.parse_args(['--query', 'test'])
print(args.query, args.model, args.max_tokens)Validación de tipos
El parámetro type= convierte automáticamente la entrada de texto y la valida. Use tipos integrados como int, float y bool, o una función personalizada para validaciones más complejas.
import argparse
def positive_int(value: str) -> int:
n = int(value)
if n <= 0:
raise argparse.ArgumentTypeError(f'{value} must be a positive integer')
return n
parser = argparse.ArgumentParser()
parser.add_argument('--temperature', type=float, help='LLM temperature 0.0-2.0')
parser.add_argument('--max-results', type=positive_int, default=5,
help='Number of results to return (must be > 0)')
parser.add_argument('--timeout', type=float, default=30.0,
help='Request timeout in seconds')
# These would be rejected with helpful error messages:
# --temperature abc -> invalid float value
# --max-results -1 -> must be positive integer
args = parser.parse_args(['--temperature', '0.7', '--max-results', '3'])
print(args.temperature, args.max_results)choices: restricción de valores válidos
El parámetro choices=[...] restringe el argumento a un conjunto fijo de valores permitidos. argparse lo valida automáticamente y muestra las opciones en el texto de ayuda.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--format',
choices=['json', 'text', 'markdown'],
default='text',
help='Output format: json, text, or markdown'
)
parser.add_argument(
'--model',
choices=['gpt-4o', 'gpt-4o-mini', 'claude-3-5-sonnet', 'gemini-1.5-flash'],
default='gpt-4o-mini',
help='Model to use'
)
# Error if invalid value given:
# python agent.py --format xml
# agent.py: error: argument --format: invalid choice: 'xml'
# (choose from 'json', 'text', 'markdown')
args = parser.parse_args(['--format', 'json'])
print(args.format) # 'json'Indicadores booleanos con store_true
Los indicadores booleanos son conmutadores de presencia o ausencia: no se proporciona ningún valor. Use action='store_true' para establecer un indicador en True cuando esté presente y en False cuando esté ausente.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--verbose', '-v',
action='store_true',
help='Enable verbose output showing agent reasoning steps'
)
parser.add_argument(
'--no-cache',
action='store_true',
help='Disable response caching'
)
parser.add_argument(
'--dry-run',
action='store_true',
help='Parse arguments but do not run the agent'
)
# Usage: python agent.py --query 'test' --verbose
args = parser.parse_args(['--verbose'])
print(f'verbose={args.verbose}') # True
print(f'no_cache={args.no_cache}') # False
print(f'dry_run={args.dry_run}') # Falsemetavar: control de la visualización del texto de ayuda
De forma predeterminada, argparse muestra el nombre del argumento en mayúsculas en el texto de ayuda: --query QUERY. Use metavar= para mostrar un marcador de posición más informativo, como QUESTION o URL.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--query',
type=str,
metavar='QUESTION', # shown in help as: --query QUESTION
required=True,
help='Natural language question for the agent'
)
parser.add_argument(
'--url',
type=str,
metavar='URL', # shown in help as: --url URL
help='URL to scrape and summarize'
)
parser.add_argument(
'--temperature',
type=float,
metavar='0.0-2.0', # shown in help as: --temperature 0.0-2.0
default=0.7
)
# Help output:
# --query QUESTION Natural language question for the agent
# --url URL URL to scrape and summarize
print('metavar makes help text more informative')Múltiples valores con nargs
Use nargs='+' para aceptar uno o más valores, o nargs='*' para aceptar cero o más. Esto resulta útil para pasar al agente listas de URL, etiquetas o rutas de archivos.
import argparse
parser = argparse.ArgumentParser()
parser.add_argument(
'--urls',
nargs='+', # one or more URLs
metavar='URL',
help='URLs to analyze (space-separated)'
)
parser.add_argument(
'--tags',
nargs='*', # zero or more tags
default=[],
help='Optional tags for filtering results'
)
# Usage: python agent.py --urls https://a.com https://b.com --tags ai research
args = parser.parse_args(
['--urls', 'https://a.com', 'https://b.com', '--tags', 'ai']
)
print(args.urls) # ['https://a.com', 'https://b.com']
print(args.tags) # ['ai']Subcomandos con add_subparsers()
Los subcomandos, como git commit y git push, proporcionan a cada comando su propio conjunto de argumentos. Use add_subparsers() para definirlos en argparse.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
subparsers = parser.add_subparsers(dest='command', help='Available commands')
# 'ask' subcommand
ask_parser = subparsers.add_parser('ask', help='Ask the agent a question')
ask_parser.add_argument('question', type=str, help='Question to ask')
ask_parser.add_argument('--model', default='gpt-4o-mini')
# 'search' subcommand
search_parser = subparsers.add_parser('search', help='Research a topic')
search_parser.add_argument('topic', type=str, help='Topic to research')
search_parser.add_argument('--depth', type=int, default=3, choices=[1, 2, 3])
args = parser.parse_args(['ask', 'What is Python?', '--model', 'gpt-4o'])
print(args.command) # 'ask'
print(args.question) # 'What is Python?'
print(args.model) # 'gpt-4o'Cómo escribir un buen texto de ayuda
Un buen texto de ayuda responde a tres preguntas: ¿qué hace este argumento?, ¿qué valores son válidos? y ¿cuál es el valor predeterminado? Escriba el texto de ayuda desde la perspectiva del usuario, no desde la del implementador.
import argparse
parser = argparse.ArgumentParser(
description='AI Research Agent — answers questions using web search and LLMs.',
epilog='Example: python agent.py --query "What is quantum computing?" --format json'
)
# Bad help text:
parser.add_argument('--t', type=float, help='t value') # cryptic
# Good help text:
parser.add_argument(
'--temperature',
type=float,
default=0.7,
metavar='0.0-2.0',
help='Sampling temperature for the LLM. Lower = more focused, higher = more creative. (default: 0.7)'
)
print('Good help text explains what, how, and default value')Grupos de argumentos para CLI complejas
Cuando una CLI tiene muchos argumentos, agrúpelos por tema mediante add_argument_group(). Esto facilita mucho la lectura de la salida de --help.
import argparse
parser = argparse.ArgumentParser(description='AI Agent CLI')
# Group 1: required inputs
required_group = parser.add_argument_group('Required')
required_group.add_argument('--query', required=True, help='Question to ask')
# Group 2: LLM settings
llm_group = parser.add_argument_group('LLM Settings')
llm_group.add_argument('--model', default='gpt-4o-mini', help='Model name')
llm_group.add_argument('--temperature', type=float, default=0.7)
llm_group.add_argument('--max-tokens', type=int, default=1000)
# Group 3: output settings
output_group = parser.add_argument_group('Output')
output_group.add_argument('--format', choices=['text', 'json'], default='text')
output_group.add_argument('--verbose', action='store_true')
print('Argument groups organize --help output by category')Valores alternativos de variables de entorno
Permita que los argumentos recurran a variables de entorno cuando no se proporcionen. Así, los usuarios pueden establecer valores predeterminados en el perfil de su shell sin tener que escribirlos cada vez.
import argparse
import os
os.environ['OPENAI_API_KEY'] = 'sk-proj-demo-key'
parser = argparse.ArgumentParser()
parser.add_argument(
'--api-key',
type=str,
default=os.environ.get('OPENAI_API_KEY'),
help='OpenAI API key (default: $OPENAI_API_KEY env var)'
)
parser.add_argument(
'--model',
type=str,
default=os.environ.get('AGENT_MODEL', 'gpt-4o-mini'),
help='Model to use (default: $AGENT_MODEL or gpt-4o-mini)'
)
args = parser.parse_args([])
if not args.api_key:
parser.error('--api-key is required (or set OPENAI_API_KEY environment variable)')
print(f'Model: {args.model}')Comprobación de conocimientos: análisis de argumentos
Compruebe sus conocimientos sobre las técnicas de análisis de argumentos de CLI.
Recapitulación: análisis de argumentos y texto de ayuda
Ahora sabe cómo crear una interfaz de argumentos de CLI completa y fácil de usar:
- Use
required=Truepara los argumentos obligatorios ydefault=para los opcionales - Valide los tipos de entrada con
type=y funciones de validación personalizadas - Restrinja los valores con
choices=[...] - Use
action='store_true'para los indicadores booleanos - Mejore la legibilidad de la ayuda con
metavar=y cadenashelp=claras - Acepte múltiples valores con
nargs='+' - Use subcomandos y grupos de argumentos para CLI complejas
- Recurra a variables de entorno para las opciones habituales
Preguntas frecuentes
¿La lección «Análisis de argumentos y texto de ayuda» es gratis?
Sí — el texto completo de «Análisis de argumentos y texto de ayuda» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AI Agents, actualiza a CoddyKit PRO. El curso de AI Agents incluye 4 lecciones en total.
¿Qué aprenderé en «Análisis de argumentos y texto de ayuda»?
Argumentos obligatorios y opcionales, validación de tipos y ayuda generada automáticamente. Practicas AI Agents con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar AI Agents?
No se requiere experiencia previa. AI Agents en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Análisis de argumentos y texto de ayuda»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de AI Agents?
Sí. Cada lección de AI Agents incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Creación de interfaces de agentes de línea de comandos
- Agentes interactivos al estilo REPL
- Análisis de argumentos y texto de ayuda
- Salida en streaming en agentes CLI