การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ
อาร์กิวเมนต์ที่จำเป็นเทียบกับอาร์กิวเมนต์เสริม การตรวจสอบประเภท และความช่วยเหลือที่สร้างอัตโนมัติ
การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ เป็นบทเรียน AI Agents ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน 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}') # Falsemetavar: การควบคุมการแสดงข้อความช่วยเหลือ
โดยค่าเริ่มต้น 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='+' เพื่อรับค่าตั้งแต่หนึ่งค่าขึ้นไป หรือ 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) ทำให้แต่ละคำสั่งมีชุดอาร์กิวเมนต์ของตัวเอง ใช้ add_subparsers() เพื่อกำหนดคำสั่งเหล่านี้ใน 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'การเขียนข้อความช่วยเหลือที่ดี
ข้อความช่วยเหลือที่ดีควรตอบคำถามสามข้อ ได้แก่ อาร์กิวเมนต์นี้ทำอะไร ค่าชนิดใดใช้ได้ และค่าเริ่มต้นคืออะไร เขียนข้อความช่วยเหลือจากมุมมองของผู้ใช้ ไม่ใช่จากมุมมองของผู้พัฒนา
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 ที่ซับซ้อน
- ใช้ตัวแปรสภาพแวดล้อมเป็นค่าทดแทนสำหรับการตั้งค่าที่ใช้บ่อย
เรียนรู้ AI Agents ด้วย AI tutor — ฟรี
เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป
- คอร์ส
- 60
- บทเรียน
- 239
คำถามที่พบบ่อย
บทเรียน “การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส AI Agents ให้อัปเกรดเป็น CoddyKit PRO คอร์ส AI Agents มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ”
อาร์กิวเมนต์ที่จำเป็นเทียบกับอาร์กิวเมนต์เสริม การตรวจสอบประเภท และความช่วยเหลือที่สร้างอัตโนมัติ คุณปฏิบัติ AI Agents ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน AI Agents หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน AI Agents บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน AI Agents นี้ได้ไหม
ได้ บทเรียน AI Agents ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การสร้างส่วนติดต่อบรรทัดคำสั่งสำหรับตัวแทน
- ตัวแทนรูปแบบ REPL แบบโต้ตอบ
- การแยกวิเคราะห์อาร์กิวเมนต์และข้อความช่วยเหลือ
- การส่งข้อมูลออกแบบสตรีมในตัวแทน CLI