AI编程从零起步:手把手教你开发自己的第一个Skill
AI编程从零起步:手把手教你开发自己的第一个Skill
AI编程入门:开发自己的Skill
什么是Skill?
Skill(技能)是AI助手的扩展功能模块,让AI能够执行特定任务——比如查询天气、发送邮件、计算数学题、调用外部API等。开发自己的Skill,就是教会AI一项新能力。
快速入门:5步开发一个Skill
第1步:确定Skill功能
从一个简单需求开始。例如:“查股票价格”Skill——用户输入股票代码,返回实时价格。
第2步:设计输入输出
输入:股票代码(如 AAPL, 600036) 输出:股票名称、当前价格、涨跌幅第3步:编写核心代码(Python示例)
# stock_skill.pyimportrequestsimportjsondefget_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",{})ifquote:return{"symbol":symbol,"price":quote.get("05. price"),"change":quote.get("09. change"),"change_percent":quote.get("10. change percent")}returnNone# Skill的入口函数defexecute(input_data):symbol=input_data.get("symbol")result=get_stock_price(symbol)return{"success":resultisnotNone,"data":result,"message":f"{symbol}当前价格:{result['price']}"ifresultelse"查询失败"}第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.pyfromstock_skillimportexecute# 模拟用户输入user_input={"symbol":"AAPL"}result=execute(user_input)print(result["message"])# 输出:AAPL 当前价格: 175.50更实用的Skill模板
1. 天气查询Skill
# weather_skill.pyimportrequestsdefget_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"]}defexecute(input_data):city=input_data.get("city")api_key=input_data.get("api_key")# 实际应配置在环境变量returnget_weather(city,api_key)2. 文本处理Skill
# text_summary_skill.pyfromtransformersimportpipeline# 加载模型(首次运行会下载)summarizer=pipeline("summarization",model="facebook/bart-large-cnn")defexecute(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. 错误处理要完整
defexecute(input_data):try:# 验证输入ifnotinput_data.get("symbol"):return{"success":False,"error":"缺少symbol参数"}# 执行核心逻辑result=fetch_data(input_data["symbol"])return{"success":True,"data":result}exceptrequests.Timeout:return{"success":False,"error":"API请求超时"}exceptExceptionase:return{"success":False,"error":str(e)}2. 配置与代码分离
importosfromdotenvimportload_dotenv load_dotenv()API_KEY=os.getenv("STOCK_API_KEY")CACHE_TTL=int(os.getenv("CACHE_TTL","300"))3. 添加缓存提升性能
fromfunctoolsimportlru_cacheimporttime@lru_cache(maxsize=100)defget_cached_price(symbol,timestamp):# timestamp用于控制缓存时间returnfetch_real_price(symbol)defexecute(input_data):symbol=input_data["symbol"]cache_key=int(time.time()/300)# 5分钟缓存returnget_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调用你的Skillresponse=openai.ChatCompletion.create(model="gpt-4",messages=[{"role":"user","content":"苹果股价多少?"}],functions=[skill_schema])方式2:本地Skill框架
# skill_loader.pyimportimportlibimportjsonclassSkillManager:def__init__(self):self.skills={}defregister_skill(self,name,module_path):module=importlib.import_module(module_path)self.skills[name]=module.executedefexecute(self,skill_name,input_data):ifskill_namenotinself.skills:return{"error":f"Skill{skill_name}not found"}returnself.skills[skill_name](input_data)# 使用manager=SkillManager()manager.register_skill("stock","stock_skill")result=manager.execute("stock",{"symbol":"AAPL"})实战练习:开发一个计算器Skill
# calculator_skill.pyimportredefexecute(input_data):""" 支持基础运算和表达式 输入: {"expression": "2 + 3 * 4"} """expression=input_data.get("expression","")# 安全检查:只允许数字和运算符ifnotre.match(r'^[\d\s\+\-\*\/\(\)\.]+$',expression):return{"success":False,"error":"表达式包含非法字符"}try:# 安全执行(注意:实际生产应使用ast.literal_eval或math库)result=eval(expression)return{"success":True,"expression":expression,"result":result}exceptExceptionase: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 = 解决具体问题 + 稳定可靠 + 易于集成。
