0Pricing
AI Agents · 강의

인수 파싱 및 도움말 텍스트

필수 인수와 선택 인수, 유형 검증, 자동 생성 도움말을 알아봅니다.

인수 파싱 및 도움말 텍스트은(는) CoddyKit의 무료 AI Agents 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 AI Agents 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

좋은 CLI 설계는 좋은 인수에서 시작됩니다

잘 설계된 CLI 에이전트의 인수 인터페이스라면 사용자는 --help만 보고도 도구 사용법을 파악할 수 있습니다. 모든 인수에는 명확한 이름, 형식, 기본값, 설명이 있어야 합니다.

이름이 부적절하거나 문서화되지 않은 인수는 도구를 사용하기 어렵고 유지 관리하기도 힘들게 만듭니다.

필수 인수와 선택적 인수

필수 인수는 반드시 제공해야 하며, 누락되면 CLI가 오류와 함께 종료됩니다. 선택적 인수에는 default= 값이 있어 생략할 수 있습니다. 어떤 인수를 필수로 할지 선택하는 일이 도구의 사용자 경험을 결정합니다.

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)

형식 검증

type= 매개변수는 문자열 입력을 자동으로 변환하고 검증합니다. int, float, bool과 같은 기본 제공 형식이나 더 복잡한 검증을 위한 사용자 지정 함수를 사용하십시오.

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=[...] 매개변수는 인수를 허용된 값의 고정된 집합으로 제한합니다. argparse는 이를 자동으로 검증하고 도움말 텍스트에 선택지를 나열합니다.

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'

store_true를 사용하는 불리언 플래그

불리언 플래그는 값의 유무를 전환하는 옵션이므로 별도의 값이 제공되지 않습니다. action='store_true'를 사용하면 플래그가 있을 때는 True로, 없을 때는 False로 설정할 수 있습니다.

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

metavar: 도움말 텍스트 표시 제어하기

기본적으로 argparse는 도움말 텍스트에서 인수 이름을 대문자로 표시합니다: --query QUERY. metavar=를 사용하면 QUESTION이나 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')

nargs를 사용한 여러 값

하나 이상의 값을 받으려면 nargs='+'를 사용하고, 0개 이상의 값을 받으려면 nargs='*'를 사용하십시오. 에이전트에 URL, 태그 또는 파일 경로 목록을 전달할 때 유용합니다.

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

add_subparsers()를 사용한 하위 명령

git commit, git push와 같은 하위 명령은 각 명령에 고유한 인수 집합을 제공합니다. argparse에서 하위 명령을 정의하려면 add_subparsers()를 사용하십시오.

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'

좋은 도움말 텍스트 작성하기

좋은 도움말 텍스트는 세 가지 질문에 답해야 합니다. 이 인수는 무엇을 하는가, 어떤 값이 유효한가, 기본값은 무엇인가? 구현하는 사람의 관점이 아니라 사용자의 관점에서 도움말 텍스트를 작성하십시오.

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

복잡한 CLI를 위한 인수 그룹

CLI에 인수가 많다면 add_argument_group()을 사용해 주제별로 그룹화하십시오. 그러면 --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')

환경 변수 대체값

인수가 제공되지 않았을 때 환경 변수로 대체할 수 있도록 하십시오. 이렇게 하면 사용자가 매번 입력하지 않고 셸 프로필에 기본값을 설정할 수 있습니다.

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

학습 확인: 인수 구문 분석

CLI 인수 구문 분석 기법에 대한 이해도를 확인해 보십시오.

복습: 인수 구문 분석과 도움말 텍스트

이제 완전하고 사용자 친화적인 CLI 인수 인터페이스를 구축하는 방법을 알고 있습니다:

  • 필수 인수에는 required=True를, 선택적 인수에는 default=를 사용하십시오
  • type=과 사용자 지정 검증 함수로 입력 형식을 검증하십시오
  • choices=[...]로 값을 제한하십시오
  • 불리언 플래그에는 action='store_true'를 사용하십시오
  • metavar=와 명확한 help= 문자열로 도움말의 가독성을 높이십시오
  • nargs='+'로 여러 값을 받으십시오
  • 복잡한 CLI에는 하위 명령과 인수 그룹을 사용하십시오
  • 자주 사용하는 설정은 환경 변수로 대체하십시오

자주 묻는 질문

“인수 파싱 및 도움말 텍스트” 강의는 무료인가요?

네 — “인수 파싱 및 도움말 텍스트” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 AI Agents 강의 전체를 잠금 해제할 수 있습니다. AI Agents 강의에는 총 4개의 강의가 포함되어 있습니다.

“인수 파싱 및 도움말 텍스트”에서 뭘 배우나요?

필수 인수와 선택 인수, 유형 검증, 자동 생성 도움말을 알아봅니다. 브라우저에서 직접 실행하는 실습 코드로 AI Agents을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

AI Agents을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 AI Agents은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“인수 파싱 및 도움말 텍스트” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 AI Agents 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 AI Agents 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 명령줄 에이전트 인터페이스 만들기
  2. 대화형 REPL 스타일 에이전트
  3. 인수 파싱 및 도움말 텍스트
  4. CLI 에이전트의 스트리밍 출력
← AI Agents(으)로 돌아가기