@icyfenix-dmla/cli 2026.6.6-1021 → 2026.6.11-1945
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/shared/__init__.py +1 -1
- package/shared/agent_systems/__init__.py +12 -0
- package/shared/agent_systems/agent_core.py +41 -0
- package/shared/agent_systems/agent_message.py +53 -0
- package/shared/agent_systems/circuit_breaker.py +53 -0
- package/shared/agent_systems/memory_manager.py +37 -0
- package/shared/agent_systems/message_bus.py +41 -0
- package/shared/agent_systems/orchestrator.py +47 -0
- package/shared/agent_systems/specialized_agent.py +21 -0
- package/shared/agent_systems/tool_registry.py +51 -0
- package/shared/agent_systems/workflow_engine.py +68 -0
- package/src/commands/data.js +9 -0
- package/src/server/native_env_check.js +3 -1
- package/version.json +2 -2
package/package.json
CHANGED
package/shared/__init__.py
CHANGED
|
@@ -6,4 +6,4 @@
|
|
|
6
6
|
# from shared.cnn import AlexNet
|
|
7
7
|
# from shared.linear import LogisticRegression
|
|
8
8
|
|
|
9
|
-
__all__ = ['bayesian', 'cnn', 'gan', 'linear', 'llm', 'neural', 'sequence_models', 'svm', 'tree', 'unsupervised']
|
|
9
|
+
__all__ = ['agent_systems', 'bayesian', 'cnn', 'gan', 'linear', 'llm', 'neural', 'sequence_models', 'svm', 'tree', 'unsupervised']
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# AGENT_SYSTEMS 模块
|
|
2
|
+
from .agent_core import AgentCore
|
|
3
|
+
from .agent_message import AgentMessage
|
|
4
|
+
from .circuit_breaker import CircuitBreaker
|
|
5
|
+
from .memory_manager import MemoryManager
|
|
6
|
+
from .message_bus import MessageBus
|
|
7
|
+
from .orchestrator import Orchestrator
|
|
8
|
+
from .specialized_agent import SpecializedAgent
|
|
9
|
+
from .tool_registry import ToolRegistry
|
|
10
|
+
from .workflow_engine import WorkflowEngine
|
|
11
|
+
|
|
12
|
+
__all__ = ['AgentCore', 'AgentMessage', 'CircuitBreaker', 'MemoryManager', 'MessageBus', 'Orchestrator', 'SpecializedAgent', 'ToolRegistry', 'WorkflowEngine']
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# AgentCore 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
|
|
6
|
+
class AgentCore:
|
|
7
|
+
"""基于 ReAct 模式的 Agent 核心"""
|
|
8
|
+
|
|
9
|
+
def __init__(self, tool_registry, memory_manager, max_iterations=10):
|
|
10
|
+
self.tools = tool_registry
|
|
11
|
+
self.memory = memory_manager
|
|
12
|
+
self.max_iterations = max_iterations
|
|
13
|
+
|
|
14
|
+
def run(self, goal):
|
|
15
|
+
"""执行 Agent 主循环"""
|
|
16
|
+
self.memory.add("user", goal)
|
|
17
|
+
|
|
18
|
+
for i in range(self.max_iterations):
|
|
19
|
+
# 构建提示词:系统指令 + 记忆上下文 + 工具描述
|
|
20
|
+
prompt = self._build_prompt()
|
|
21
|
+
|
|
22
|
+
# 调用 LLM 生成思考和行动
|
|
23
|
+
response = self._call_llm(prompt)
|
|
24
|
+
|
|
25
|
+
# 解析响应:提取思考、行动和最终答案
|
|
26
|
+
thought, action, final_answer = self._parse_response(response)
|
|
27
|
+
|
|
28
|
+
if thought:
|
|
29
|
+
self.memory.add("thought", thought)
|
|
30
|
+
|
|
31
|
+
if final_answer:
|
|
32
|
+
return final_answer
|
|
33
|
+
|
|
34
|
+
if action:
|
|
35
|
+
# 执行工具调用
|
|
36
|
+
observation = self.tools.execute(
|
|
37
|
+
action["tool"], **action.get("parameters", {})
|
|
38
|
+
)
|
|
39
|
+
self.memory.add("observation", json.dumps(observation, ensure_ascii=False))
|
|
40
|
+
|
|
41
|
+
return "达到最大迭代次数,任务未完成"
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# AgentMessage 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import time
|
|
6
|
+
import uuid
|
|
7
|
+
from enum import Enum
|
|
8
|
+
|
|
9
|
+
class AgentMessage:
|
|
10
|
+
"""Agent 间通信的结构化消息"""
|
|
11
|
+
|
|
12
|
+
def __init__(self, msg_type, sender, receiver, payload,
|
|
13
|
+
correlation_id=None, priority=0, ttl=None):
|
|
14
|
+
self.id = str(uuid.uuid4())
|
|
15
|
+
self.type = MessageType(msg_type) if isinstance(msg_type, str) else msg_type
|
|
16
|
+
self.sender = sender
|
|
17
|
+
self.receiver = receiver
|
|
18
|
+
self.payload = payload
|
|
19
|
+
self.correlation_id = correlation_id or self.id
|
|
20
|
+
self.priority = priority
|
|
21
|
+
self.ttl = ttl
|
|
22
|
+
self.timestamp = time.time()
|
|
23
|
+
|
|
24
|
+
def to_dict(self):
|
|
25
|
+
return {
|
|
26
|
+
"id": self.id,
|
|
27
|
+
"type": self.type.value,
|
|
28
|
+
"sender": self.sender,
|
|
29
|
+
"receiver": self.receiver,
|
|
30
|
+
"payload": self.payload,
|
|
31
|
+
"correlation_id": self.correlation_id,
|
|
32
|
+
"priority": self.priority,
|
|
33
|
+
"timestamp": self.timestamp
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
@classmethod
|
|
37
|
+
def from_dict(cls, data):
|
|
38
|
+
msg = cls(
|
|
39
|
+
msg_type=data["type"],
|
|
40
|
+
sender=data["sender"],
|
|
41
|
+
receiver=data["receiver"],
|
|
42
|
+
payload=data["payload"],
|
|
43
|
+
correlation_id=data.get("correlation_id"),
|
|
44
|
+
priority=data.get("priority", 0)
|
|
45
|
+
)
|
|
46
|
+
msg.id = data["id"]
|
|
47
|
+
msg.timestamp = data.get("timestamp", time.time())
|
|
48
|
+
return msg
|
|
49
|
+
|
|
50
|
+
def is_expired(self):
|
|
51
|
+
if self.ttl is None:
|
|
52
|
+
return False
|
|
53
|
+
return time.time() - self.timestamp > self.ttl
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# CircuitBreaker 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
class CircuitBreaker:
|
|
5
|
+
"""断路器:在 Agent 持续失败时暂停向其分配任务"""
|
|
6
|
+
|
|
7
|
+
CLOSED = "closed" # 正常工作
|
|
8
|
+
OPEN = "open" # 暂停分配
|
|
9
|
+
HALF_OPEN = "half_open" # 试探性恢复
|
|
10
|
+
|
|
11
|
+
def __init__(self, failure_threshold=3, recovery_timeout=60, half_open_max=1):
|
|
12
|
+
self.failure_threshold = failure_threshold
|
|
13
|
+
self.recovery_timeout = recovery_timeout
|
|
14
|
+
self.half_open_max = half_open_max
|
|
15
|
+
self._states = {} # agent_id -> state
|
|
16
|
+
self._failure_counts = {}
|
|
17
|
+
self._last_failure_time = {}
|
|
18
|
+
self._half_open_counts = {}
|
|
19
|
+
|
|
20
|
+
def can_execute(self, agent_id):
|
|
21
|
+
"""检查是否可以向该 Agent 分配任务"""
|
|
22
|
+
state = self._states.get(agent_id, self.CLOSED)
|
|
23
|
+
|
|
24
|
+
if state == self.CLOSED:
|
|
25
|
+
return True
|
|
26
|
+
|
|
27
|
+
if state == self.OPEN:
|
|
28
|
+
# 检查是否到达恢复时间
|
|
29
|
+
elapsed = time.time() - self._last_failure_time.get(agent_id, 0)
|
|
30
|
+
if elapsed >= self.recovery_timeout:
|
|
31
|
+
self._states[agent_id] = self.HALF_OPEN
|
|
32
|
+
self._half_open_counts[agent_id] = 0
|
|
33
|
+
return True
|
|
34
|
+
return False
|
|
35
|
+
|
|
36
|
+
if state == self.HALF_OPEN:
|
|
37
|
+
# 限制试探性请求的数量
|
|
38
|
+
return self._half_open_counts.get(agent_id, 0) < self.half_open_max
|
|
39
|
+
|
|
40
|
+
return False
|
|
41
|
+
|
|
42
|
+
def record_success(self, agent_id):
|
|
43
|
+
"""记录成功执行"""
|
|
44
|
+
self._states[agent_id] = self.CLOSED
|
|
45
|
+
self._failure_counts[agent_id] = 0
|
|
46
|
+
|
|
47
|
+
def record_failure(self, agent_id):
|
|
48
|
+
"""记录执行失败"""
|
|
49
|
+
self._failure_counts[agent_id] = self._failure_counts.get(agent_id, 0) + 1
|
|
50
|
+
self._last_failure_time[agent_id] = time.time()
|
|
51
|
+
|
|
52
|
+
if self._failure_counts[agent_id] >= self.failure_threshold:
|
|
53
|
+
self._states[agent_id] = self.OPEN
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# MemoryManager 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
class MemoryManager:
|
|
5
|
+
"""简单的记忆管理器,维护对话历史和关键信息"""
|
|
6
|
+
|
|
7
|
+
def __init__(self, max_history=20):
|
|
8
|
+
self.history = []
|
|
9
|
+
self.key_facts = []
|
|
10
|
+
self.max_history = max_history
|
|
11
|
+
|
|
12
|
+
def add(self, role, content):
|
|
13
|
+
"""添加一条记录到对话历史"""
|
|
14
|
+
self.history.append({"role": role, "content": content})
|
|
15
|
+
|
|
16
|
+
# 超出限制时压缩早期历史
|
|
17
|
+
if len(self.history) > self.max_history:
|
|
18
|
+
self._compress_history()
|
|
19
|
+
|
|
20
|
+
def get_context(self):
|
|
21
|
+
"""获取当前上下文(格式化的对话历史)"""
|
|
22
|
+
return self.history.copy()
|
|
23
|
+
|
|
24
|
+
def extract_fact(self, fact):
|
|
25
|
+
"""提取关键事实到长期记忆"""
|
|
26
|
+
self.key_facts.append(fact)
|
|
27
|
+
|
|
28
|
+
def _compress_history(self):
|
|
29
|
+
"""压缩早期历史:保留最近记录,将早期记录摘要"""
|
|
30
|
+
# 保留最近 2/3 的记录,将前 1/3 压缩为摘要
|
|
31
|
+
compress_count = len(self.history) // 3
|
|
32
|
+
old_records = self.history[:compress_count]
|
|
33
|
+
self.history = self.history[compress_count:]
|
|
34
|
+
|
|
35
|
+
# 生成摘要(简化实现:提取关键信息)
|
|
36
|
+
summary = f"[历史摘要: 共 {len(old_records)} 轮对话已压缩]"
|
|
37
|
+
self.history.insert(0, {"role": "system", "content": summary})
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# MessageBus 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
import heapq
|
|
5
|
+
from collections import defaultdict
|
|
6
|
+
|
|
7
|
+
class MessageBus:
|
|
8
|
+
"""Agent 间的消息总线,支持发布-订阅和点对点通信"""
|
|
9
|
+
|
|
10
|
+
def __init__(self):
|
|
11
|
+
self._subscribers = defaultdict(list) # topic -> [agent_ids]
|
|
12
|
+
self._queues = defaultdict(list) # agent_id -> [(priority, message)]
|
|
13
|
+
self._ack_pending = {} # msg_id -> (sender, callback)
|
|
14
|
+
|
|
15
|
+
def subscribe(self, agent_id, topic):
|
|
16
|
+
"""订阅特定主题的消息"""
|
|
17
|
+
if agent_id not in self._subscribers[topic]:
|
|
18
|
+
self._subscribers[topic].append(agent_id)
|
|
19
|
+
|
|
20
|
+
def publish(self, message):
|
|
21
|
+
"""发布消息到主题,所有订阅者都会收到"""
|
|
22
|
+
topic = message.type.value
|
|
23
|
+
for agent_id in self._subscribers.get(topic, []):
|
|
24
|
+
self._enqueue(agent_id, message)
|
|
25
|
+
|
|
26
|
+
def send(self, message):
|
|
27
|
+
"""点对点发送消息给指定 Agent"""
|
|
28
|
+
self._enqueue(message.receiver, message)
|
|
29
|
+
|
|
30
|
+
def receive(self, agent_id):
|
|
31
|
+
"""接收 Agent 的下一条消息(按优先级排序)"""
|
|
32
|
+
if not self._queues[agent_id]:
|
|
33
|
+
return None
|
|
34
|
+
_, message = heapq.heappop(self._queues[agent_id])
|
|
35
|
+
if message.is_expired():
|
|
36
|
+
return self.receive(agent_id) # 跳过过期消息
|
|
37
|
+
return message
|
|
38
|
+
|
|
39
|
+
def _enqueue(self, agent_id, message):
|
|
40
|
+
"""将消息加入 Agent 的消息队列(按优先级排序)"""
|
|
41
|
+
heapq.heappush(self._queues[agent_id], (-message.priority, message))
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Orchestrator 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
class Orchestrator:
|
|
5
|
+
"""集中式编排器,负责任务分解、分配和结果整合"""
|
|
6
|
+
|
|
7
|
+
def __init__(self, message_bus, agents):
|
|
8
|
+
self.bus = message_bus
|
|
9
|
+
self.agents = {agent.agent_id: agent for agent in agents}
|
|
10
|
+
self.task_results = {}
|
|
11
|
+
self.workflow = None
|
|
12
|
+
|
|
13
|
+
def decompose_task(self, goal):
|
|
14
|
+
"""将高层目标分解为子任务列表"""
|
|
15
|
+
# 调用 LLM 进行任务分解
|
|
16
|
+
# 简化实现:基于规则的分解
|
|
17
|
+
subtasks = self._rule_based_decompose(goal)
|
|
18
|
+
return subtasks
|
|
19
|
+
|
|
20
|
+
def assign_task(self, task, agent_id):
|
|
21
|
+
"""将子任务分配给指定 Agent"""
|
|
22
|
+
msg = AgentMessage(
|
|
23
|
+
msg_type=MessageType.TASK_ASSIGN,
|
|
24
|
+
sender="orchestrator",
|
|
25
|
+
receiver=agent_id,
|
|
26
|
+
payload=task
|
|
27
|
+
)
|
|
28
|
+
self.bus.send(msg)
|
|
29
|
+
|
|
30
|
+
def collect_results(self, task_ids, timeout=60):
|
|
31
|
+
"""收集指定任务的执行结果"""
|
|
32
|
+
results = {}
|
|
33
|
+
deadline = time.time() + timeout
|
|
34
|
+
|
|
35
|
+
while time.time() < deadline and len(results) < len(task_ids):
|
|
36
|
+
msg = self.bus.receive("orchestrator")
|
|
37
|
+
if msg and msg.type == MessageType.RESULT_SUBMIT:
|
|
38
|
+
results[msg.correlation_id] = msg.payload
|
|
39
|
+
elif msg and msg.type == MessageType.ERROR_REPORT:
|
|
40
|
+
results[msg.correlation_id] = {"status": "error", "error": msg.payload}
|
|
41
|
+
|
|
42
|
+
return results
|
|
43
|
+
|
|
44
|
+
def _rule_based_decompose(self, goal):
|
|
45
|
+
"""基于规则的任务分解(简化实现)"""
|
|
46
|
+
# 实际实现中应调用 LLM 进行智能分解
|
|
47
|
+
return [{"id": "task_1", "description": goal, "type": "general"}]
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# SpecializedAgent 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
class SpecializedAgent:
|
|
5
|
+
"""专业化 Agent 基类,每个子类实现特定领域的逻辑"""
|
|
6
|
+
|
|
7
|
+
def __init__(self, agent_id, role, description, tools, message_bus):
|
|
8
|
+
self.agent_id = agent_id
|
|
9
|
+
self.role = role
|
|
10
|
+
self.description = description
|
|
11
|
+
self.tools = tools
|
|
12
|
+
self.bus = message_bus
|
|
13
|
+
self.status = "idle"
|
|
14
|
+
self.current_task = None
|
|
15
|
+
|
|
16
|
+
def get_system_prompt(self):
|
|
17
|
+
"""生成 Agent 的系统提示词"""
|
|
18
|
+
tool_descriptions = "\n".join([
|
|
19
|
+
f"- {t['name']}: {t['description']}" for t in self.tools.get_schemas()
|
|
20
|
+
])
|
|
21
|
+
return f"""你是一个{self.role}。
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
# ToolRegistry 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
import json
|
|
5
|
+
import signal
|
|
6
|
+
import time
|
|
7
|
+
from functools import wraps
|
|
8
|
+
|
|
9
|
+
class ToolRegistry:
|
|
10
|
+
"""工具注册中心,管理可用工具的注册、验证和执行"""
|
|
11
|
+
|
|
12
|
+
def __init__(self):
|
|
13
|
+
self._tools = {}
|
|
14
|
+
self._schemas = {}
|
|
15
|
+
|
|
16
|
+
def register(self, name=None, description="", parameters=None, timeout=30):
|
|
17
|
+
"""工具注册装饰器"""
|
|
18
|
+
def decorator(func):
|
|
19
|
+
tool_name = name or func.__name__
|
|
20
|
+
self._tools[tool_name] = func
|
|
21
|
+
self._schemas[tool_name] = {
|
|
22
|
+
"name": tool_name,
|
|
23
|
+
"description": description or func.__doc__ or "",
|
|
24
|
+
"parameters": parameters or {"type": "object", "properties": {}},
|
|
25
|
+
"timeout": timeout
|
|
26
|
+
}
|
|
27
|
+
return func
|
|
28
|
+
return decorator
|
|
29
|
+
|
|
30
|
+
def get_schemas(self):
|
|
31
|
+
"""获取所有工具的描述 schema"""
|
|
32
|
+
return list(self._schemas.values())
|
|
33
|
+
|
|
34
|
+
def execute(self, tool_name, **kwargs):
|
|
35
|
+
"""执行指定工具,带参数验证和超时控制"""
|
|
36
|
+
if tool_name not in self._tools:
|
|
37
|
+
return {"error": f"工具 '{tool_name}' 不存在", "available_tools": list(self._tools.keys())}
|
|
38
|
+
|
|
39
|
+
# 参数验证(简化版)
|
|
40
|
+
schema = self._schemas[tool_name]
|
|
41
|
+
required = schema["parameters"].get("required", [])
|
|
42
|
+
for param in required:
|
|
43
|
+
if param not in kwargs:
|
|
44
|
+
return {"error": f"缺少必选参数 '{param}'"}
|
|
45
|
+
|
|
46
|
+
# 执行工具
|
|
47
|
+
try:
|
|
48
|
+
result = self._tools[tool_name](**kwargs)
|
|
49
|
+
return {"result": result}
|
|
50
|
+
except Exception as e:
|
|
51
|
+
return {"error": f"工具执行失败: {str(e)}"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# WorkflowEngine 定义
|
|
2
|
+
# 从文档自动提取生成
|
|
3
|
+
|
|
4
|
+
from collections import deque
|
|
5
|
+
|
|
6
|
+
class WorkflowEngine:
|
|
7
|
+
"""基于 DAG 的工作流执行引擎"""
|
|
8
|
+
|
|
9
|
+
def __init__(self, message_bus, orchestrator):
|
|
10
|
+
self.bus = message_bus
|
|
11
|
+
self.orchestrator = orchestrator
|
|
12
|
+
self.checkpoints = {}
|
|
13
|
+
|
|
14
|
+
def execute(self, workflow):
|
|
15
|
+
"""执行工作流 DAG"""
|
|
16
|
+
# 拓扑排序确定执行顺序
|
|
17
|
+
execution_order = self._topological_sort(workflow)
|
|
18
|
+
|
|
19
|
+
# 按层级执行(同层节点可并行)
|
|
20
|
+
for level in execution_order:
|
|
21
|
+
# 并行分配同层任务
|
|
22
|
+
for node_id in level:
|
|
23
|
+
node = workflow["nodes"][node_id]
|
|
24
|
+
agent_id = node.get("agent_id")
|
|
25
|
+
if agent_id:
|
|
26
|
+
self.orchestrator.assign_task(node["task"], agent_id)
|
|
27
|
+
|
|
28
|
+
# 等待同层任务完成
|
|
29
|
+
results = self.orchestrator.collect_results(level)
|
|
30
|
+
|
|
31
|
+
# 保存检查点
|
|
32
|
+
self.checkpoints[level] = results
|
|
33
|
+
|
|
34
|
+
# 检查是否有失败的任务
|
|
35
|
+
for task_id, result in results.items():
|
|
36
|
+
if result.get("status") == "error":
|
|
37
|
+
# 触发容错处理
|
|
38
|
+
self._handle_failure(task_id, result, workflow)
|
|
39
|
+
|
|
40
|
+
return self.checkpoints
|
|
41
|
+
|
|
42
|
+
def _topological_sort(self, workflow):
|
|
43
|
+
"""拓扑排序,返回按层级组织的执行顺序"""
|
|
44
|
+
nodes = workflow["nodes"]
|
|
45
|
+
edges = workflow.get("edges", [])
|
|
46
|
+
|
|
47
|
+
# 计算入度
|
|
48
|
+
in_degree = {nid: 0 for nid in nodes}
|
|
49
|
+
children = {nid: [] for nid in nodes}
|
|
50
|
+
for edge in edges:
|
|
51
|
+
children[edge["from"]].append(edge["to"])
|
|
52
|
+
in_degree[edge["to"]] += 1
|
|
53
|
+
|
|
54
|
+
# BFS 分层
|
|
55
|
+
levels = []
|
|
56
|
+
queue = deque([nid for nid, deg in in_degree.items() if deg == 0])
|
|
57
|
+
while queue:
|
|
58
|
+
level = []
|
|
59
|
+
for _ in range(len(queue)):
|
|
60
|
+
nid = queue.popleft()
|
|
61
|
+
level.append(nid)
|
|
62
|
+
for child in children[nid]:
|
|
63
|
+
in_degree[child] -= 1
|
|
64
|
+
if in_degree[child] == 0:
|
|
65
|
+
queue.append(child)
|
|
66
|
+
levels.append(level)
|
|
67
|
+
|
|
68
|
+
return levels
|
package/src/commands/data.js
CHANGED
|
@@ -96,6 +96,15 @@ const DATASETS = [
|
|
|
96
96
|
format: 'git',
|
|
97
97
|
targetDir: 'datasets/minimind-alignment',
|
|
98
98
|
source: 'ModelScope (icyfenix)'
|
|
99
|
+
},
|
|
100
|
+
{
|
|
101
|
+
id: 'gsm8k-200',
|
|
102
|
+
name: 'GSM8K 200 (数学推理评测集)',
|
|
103
|
+
url: 'https://www.modelscope.cn/datasets/icyfenix/GSM8K_200.git',
|
|
104
|
+
size: '~109KB',
|
|
105
|
+
format: 'git',
|
|
106
|
+
targetDir: 'datasets/gsm8k-200',
|
|
107
|
+
source: 'ModelScope (icyfenix)'
|
|
99
108
|
}
|
|
100
109
|
]
|
|
101
110
|
|
package/version.json
CHANGED