+
78
-

如何用python自己写一个通过对话自动创建和使用skills的功能代码

如何用python自己写一个通过对话自动创建和使用skills的功能代码

不依赖第三方库或插件,用python代码+openai的api实现。

网友回复

+
24
-

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

元编程 (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"
AP...

点击查看剩余70%

+
19
-

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

元编程 (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" [Agent] 正在编写新技能: {function_name}...")

    # 1. 动态执行代码
    local_scope = {}
    try:
        # 警告:exec 在生产环境中极其危险,这里仅用于演示
        exec(python_code, globals(), local_scope)

        if function_name not in local_scope:
            return f"Error: The code executed successfully but function '{function_name}' was not found."

        new_func = local_scope[function_name]

    except Exception as e:
        return f"Error executing python code: {str(e)}"

    # 2. 构建 Tool Schema
    try:
    ...

点击查看剩余70%

我知道答案,我要回答