AI编程从零起步:手把手教你开发自己的第一个Skill

AI编程入门:开发自己的Skill

什么是Skill?

Skill(技能)是AI助手的扩展功能模块,让AI能够执行特定任务——比如查询天气、发送邮件、计算数学题、调用外部API等。开发自己的Skill,就是教会AI一项新能力。

快速入门:5步开发一个Skill

第1步:确定Skill功能

从一个简单需求开始。例如:“查股票价格”Skill——用户输入股票代码,返回实时价格。

第2步:设计输入输出

输入:股票代码(如 AAPL, 600036)
输出:股票名称、当前价格、涨跌幅

第3步:编写核心代码(Python示例)

# stock_skill.py
import requests
import json
def get_stock_price(symbol):
    """
    获取股票价格(使用免费API示例)
    """
    # 使用Alpha Vantage免费API(需申请key)
    api_key = "YOUR_API_KEY"
    url = f"https://www.alphavantage.co/query"
    params = {
        "function": "GLOBAL_QUOTE",
        "symbol": symbol,
        "apikey": api_key
    }
    
    response = requests.get(url, params=params)
    data = response.json()
   
    quote = data.get("Global Quote", {})
    if quote:
        return {
            "symbol": symbol,
            "price": quote.get("05. price"),
            "change": quote.get("09. change"),
            "change_percent": quote.get("10. change percent")
        }
    return None

# Skill的入口函数
def execute(input_data):
    symbol = input_data.get("symbol")
    result = get_stock_price(symbol)
    return {
        "success": result is not None,
        "data": result,
        "message": f"{symbol} 当前价格: {result['price']}" if result else "查询失败"
    }

第4步:创建Skill配置文件

{
  "name": "stock_price_skill",
  "version": "1.0.0",
  "description": "查询股票实时价格",
  "author": "Your Name",
  "inputs": [
    {
      "name": "symbol",
      "type": "string",
      "description": "股票代码(如 AAPL, 600036)",
      "required": true
    }
  ],
  "outputs": {
    "success": "boolean",
    "data": "object",
    "message": "string"
  }
}

第5步:注册并测试

# test_skill.py
from stock_skill import execute
# 模拟用户输入
user_input = {"symbol": "AAPL"}
result = execute(user_input)

print(result["message"])  
# 输出:AAPL 当前价格: 175.50

更实用的Skill模板

1. 天气查询Skill

# weather_skill.py
import requests

def get_weather(city, api_key):
    url = f"http://api.openweathermap.org/data/2.5/weather"
    params = {
        "q": city,
        "appid": api_key,
        "units": "metric"
    }
    resp = requests.get(url, params=params)
    data = resp.json()
    
    return {
        "city": city,
        "temperature": data["main"]["temp"],
        "humidity": data["main"]["humidity"],
        "description": data["weather"][0]["description"]
    }

def execute(input_data):
    city = input_data.get("city")
    api_key = input_data.get("api_key")  # 实际应配置在环境变量
    return get_weather(city, api_key)

2. 文本处理Skill

# text_summary_skill.py
from transformers import pipeline

# 加载模型(首次运行会下载)
summarizer = pipeline("summarization", model="facebook/bart-large-cnn")

def execute(input_data):
    text = input_data.get("text")
    max_length = input_data.get("max_length", 130)
   
    summary = summarizer(text, max_length=max_length, min_length=30)
    
    return {
        "original_length": len(text),
        "summary": summary[0]["summary_text"],
        "summary_length": len(summary[0]["summary_text"])
    }

Skill开发最佳实践

1. 错误处理要完整

def execute(input_data):
    try:
        # 验证输入
        if not input_data.get("symbol"):
            return {"success": False, "error": "缺少symbol参数"}
        
        # 执行核心逻辑
        result = fetch_data(input_data["symbol"])
        
        return {"success": True, "data": result}
        
    except requests.Timeout:
        return {"success": False, "error": "API请求超时"}
    except Exception as e:
        return {"success": False, "error": str(e)}

2. 配置与代码分离

import os
from dotenv import load_dotenv

load_dotenv()

API_KEY = os.getenv("STOCK_API_KEY")
CACHE_TTL = int(os.getenv("CACHE_TTL", "300"))

3. 添加缓存提升性能

from functools import lru_cache
import time

@lru_cache(maxsize=100)
def get_cached_price(symbol, timestamp):
    # timestamp用于控制缓存时间
    return fetch_real_price(symbol)

def execute(input_data):
    symbol = input_data["symbol"]
    cache_key = int(time.time() / 300)  # 5分钟缓存
    return get_cached_price(symbol, cache_key)

将Skill集成到AI助手

方式1:函数调用(Function Calling)

# OpenAI格式的Skill声明
skill_schema = {
    "name": "get_stock_price",
    "description": "获取股票实时价格",
    "parameters": {
        "type": "object",
        "properties": {
            "symbol": {
                "type": "string",
                "description": "股票代码,如 AAPL"
            }
        },
        "required": ["symbol"]
    }
}

# AI调用你的Skill
response = openai.ChatCompletion.create(
    model="gpt-4",
    messages=[{"role": "user", "content": "苹果股价多少?"}],
    functions=[skill_schema]
)

方式2:本地Skill框架

# skill_loader.py
import importlib
import json

class SkillManager:
    def __init__(self):
        self.skills = {}
    
    def register_skill(self, name, module_path):
        module = importlib.import_module(module_path)
        self.skills[name] = module.execute
    
    def execute(self, skill_name, input_data):
        if skill_name not in self.skills:
            return {"error": f"Skill {skill_name} not found"}
        return self.skills[skill_name](input_data)

# 使用
manager = SkillManager()
manager.register_skill("stock", "stock_skill")
result = manager.execute("stock", {"symbol": "AAPL"})

实战练习:开发一个计算器Skill

# calculator_skill.py
import re
def execute(input_data):
    """
    支持基础运算和表达式
    输入: {"expression": "2 + 3 * 4"}
    """
    expression = input_data.get("expression", "")
    
    # 安全检查:只允许数字和运算符
    if not re.match(r'^[\d\s\+\-\*\/\(\)\.]+$', expression):
        return {"success": False, "error": "表达式包含非法字符"}
   
    try:
        # 安全执行(注意:实际生产应使用ast.literal_eval或math库)
        result = eval(expression)
        return {
            "success": True,
            "expression": expression,
            "result": result
        }
    except Exception as e:
        return {"success": False, "error": f"计算错误: {str(e)}"}

# 测试
if __name__ == "__main__":
    print(execute({"expression": "(10 + 5) * 2"}))
    # 输出: {'success': True, 'expression': '(10 + 5) * 2', 'result': 30}

下一步学习路径

  1. 熟悉API调用 → 学习requests库、RESTful API
  2. 学习异步处理 → asyncio、aiohttp提升性能
  3. 添加数据库 → SQLite/PostgreSQL存储数据
  4. 部署为Web服务 → FastAPI/Flask包装成微服务
  5. 学习LangChain → 构建复杂AI Agent Skill链

推荐资源

  • 免费API: OpenWeatherMap、Alpha Vantage、NewsAPI
  • 学习平台: Fast.ai、Hugging Face教程
  • 工具: VS Code + GitHub Copilot、Postman测试API

从最简单的功能开始,逐步迭代。一个好Skill = 解决具体问题 + 稳定可靠 + 易于集成

Logo

小龙虾开发者社区是 CSDN 旗下专注 OpenClaw 生态的官方阵地,聚焦技能开发、插件实践与部署教程,为开发者提供可直接落地的方案、工具与交流平台,助力高效构建与落地 AI 应用

更多推荐