AI编程从零起步:手把手教你开发自己的第一个Skill
Skill(技能)是AI助手的扩展功能模块,让AI能够执行特定任务——比如查询天气、发送邮件、计算数学题、调用外部API等。开发自己的Skill,就是教会AI一项新能力。
·
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}
下一步学习路径
- 熟悉API调用 → 学习requests库、RESTful API
- 学习异步处理 → asyncio、aiohttp提升性能
- 添加数据库 → SQLite/PostgreSQL存储数据
- 部署为Web服务 → FastAPI/Flask包装成微服务
- 学习LangChain → 构建复杂AI Agent Skill链
推荐资源
- 免费API: OpenWeatherMap、Alpha Vantage、NewsAPI
- 学习平台: Fast.ai、Hugging Face教程
- 工具: VS Code + GitHub Copilot、Postman测试API
从最简单的功能开始,逐步迭代。一个好Skill = 解决具体问题 + 稳定可靠 + 易于集成。
更多推荐




所有评论(0)