+
74
-

回答

要实现“自动创建技能并使用技能”的核心思想是:

元编程 (Meta-programming):让 LLM 编写 Python 代码(函数)。

动态执行 (Dynamic Execution):在 Python 运行时中执行这段代码,将其注册为可用函数。

工具调用 (Tool Calling):利用 OpenAI 兼容 API 的 Function Calling 能力,既用来调用“创建技能”的工具,也用来调用“新创建好”的技能。

下面是一个完整的 Python 示例代码。这个代码构建了一个 Agent,它初始时只有一个核心技能:create_new_tool。当它遇到无法直接解决的问题时,它会编写一个新的 Python 函数,注册它,然后立即使用这个新函数来解决问题。

前置准备

你需要安装 OpenAI 的 Python SDK:

pip install openai

完整代码实现

import os
import json
import inspect
from typing import Dict, Any, List, Callable
from openai import OpenAI

# ================= 配置部分 =================
# 这里以阿里云 DashScope (通义千问) 为例,也可以换成本地 vLLM/Ollama
# 如果是本地 Qwen,base_url 通常是 "http://localhost:8000/v1"
API_KEY = "sk-xxxxxxxxxxxxxxxxxxx"  # 替换你的 API Key
BASE_URL = "https://dashscope.aliyuncs.com/compatible-mode/v1" 
MODEL_NAME = "qwen-plus" # 或者 qwen-max, qwen-turbo, qwen2.5-72b-instruct

client = OpenAI(
    api_key=API_KEY,
    base_url=BASE_URL,
)

# ================= 技能注册表 =================

class SkillRegistry:
    def __init__(self):
        self.functions: Dict[str, Callable] = {}
        self.tools_schema: List[Dict] = []

    def register(self, func_name: str, func_callable: Callable, schema: Dict):
        """注册一个新函数及其 Schema"""
        self.functions[func_name] = func_callable
        self.tools_schema.append(schema)
        print(f"✅ [系统] 新技能已注册: {func_name}")

    def get_function(self, name: str) -> Callable:
        return self.functions.get(name)

    def get_tools_schema(self) -> List[Dict]:
        return self.tools_schema

registry = SkillRegistry()

# ================= 核心:定义"创建技能"的元技能 =================

def create_new_tool(function_name: str, python_code: str, description: str, parameters_json: str):
    """
    这是一个元技能,允许 AI 编写新的 Python 代码并将其注册为工具。

    Args:
        function_name: 新函数的名称 (例如 'calculate_fibonacci')
        python_code: 可执行的 Python 函数代码字符串。
        description: 对该函数功能的描述。
        parameters_json: 符合 OpenAI JSON Schema 格式的参数定义字符串。
    """
    print(f"					

网友回复

我知道答案,我要回答