-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrun_agent.py
More file actions
105 lines (87 loc) · 3.45 KB
/
Copy pathrun_agent.py
File metadata and controls
105 lines (87 loc) · 3.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# run_agent.py
"""
單個Agent獨立運行腳本
讓每個Agent都可以完全獨立執行,不依賴其他Agent
"""
import sys
import os
import argparse
def run_agent_standalone(agent_name: str, args: list):
"""獨立運行單個Agent"""
# 根據agent名稱動態導入
try:
if agent_name == "essay":
from agents.essay_agent import EssayAgent
agent = EssayAgent(base_dir=args.base_dir if hasattr(args, 'base_dir') else "base")
elif agent_name == "boolean":
from agents.boolean_agent import BooleanAgent
agent = BooleanAgent(base_dir=args.base_dir if hasattr(args, 'base_dir') else "base")
elif agent_name == "exam":
from agents.exam_agent import ExamAgent
agent = ExamAgent(base_dir=args.base_dir if hasattr(args, 'base_dir') else "base")
else:
print(f"未知的Agent: {agent_name}")
return False
except ImportError as e:
print(f"無法載入Agent {agent_name}: {e}")
return False
# 執行批改
try:
kwargs = {}
if hasattr(args, 'force_regenerate') and args.force_regenerate:
kwargs['force_regenerate'] = True
mode = 'test' if hasattr(args, 'test') and args.test else 'auto'
batch_size = getattr(args, 'batch_size', 5)
results = agent.run_grading(
args.assignment_id,
mode=mode,
batch_size=batch_size,
**kwargs
)
print(f"\nAgent {agent_name} 執行完成,處理了 {len(results)} 份作業")
return True
except Exception as e:
print(f"執行Agent {agent_name} 時發生錯誤: {str(e)}")
return False
def main():
"""獨立運行腳本的主函數"""
if len(sys.argv) < 3:
print("使用方法:")
print(" python run_agent.py <agent_name> <assignment_id> [options]")
print(" 例如: python run_agent.py essay 1.2")
print(" python run_agent.py boolean 1.1 --test")
print(" python run_agent.py exam midterm --batch-size 3")
sys.exit(1)
agent_name = sys.argv[1]
assignment_id = sys.argv[2]
# 簡單的參數解析
class Args:
def __init__(self):
self.assignment_id = assignment_id
self.test = '--test' in sys.argv
self.force_regenerate = '--force-regenerate' in sys.argv
self.batch_size = 5
self.base_dir = "base"
# 解析batch-size
for i, arg in enumerate(sys.argv):
if arg.startswith('--batch-size'):
if '=' in arg:
self.batch_size = int(arg.split('=')[1])
elif i + 1 < len(sys.argv):
self.batch_size = int(sys.argv[i + 1])
if arg.startswith('--base-dir'):
if '=' in arg:
self.base_dir = arg.split('=')[1]
elif i + 1 < len(sys.argv):
self.base_dir = sys.argv[i + 1]
args = Args()
# 檢查API金鑰
from utils import validate_api_key
if not validate_api_key():
print("錯誤: 請先設置 OPENAI_API_KEY 環境變數")
sys.exit(1)
# 執行Agent
success = run_agent_standalone(agent_name, args)
sys.exit(0 if success else 1)
if __name__ == "__main__":
main()