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

张开发
2026/4/20 3:40:51 15 分钟阅读

分享文章

AI编程从零起步:手把手教你开发自己的第一个Skill
AI编程从零起步手把手教你开发自己的第一个SkillAI编程入门开发自己的Skill什么是SkillSkill技能是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需申请keyapi_keyYOUR_API_KEYurlfhttps://www.alphavantage.co/queryparams{function:GLOBAL_QUOTE,symbol:symbol,apikey:api_key}responserequests.get(url,paramsparams)dataresponse.json()quotedata.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):symbolinput_data.get(symbol)resultget_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}resultexecute(user_input)print(result[message])# 输出AAPL 当前价格: 175.50更实用的Skill模板1. 天气查询Skill# weather_skill.pyimportrequestsdefget_weather(city,api_key):urlfhttp://api.openweathermap.org/data/2.5/weatherparams{q:city,appid:api_key,units:metric}resprequests.get(url,paramsparams)dataresp.json()return{city:city,temperature:data[main][temp],humidity:data[main][humidity],description:data[weather][0][description]}defexecute(input_data):cityinput_data.get(city)api_keyinput_data.get(api_key)# 实际应配置在环境变量returnget_weather(city,api_key)2. 文本处理Skill# text_summary_skill.pyfromtransformersimportpipeline# 加载模型首次运行会下载summarizerpipeline(summarization,modelfacebook/bart-large-cnn)defexecute(input_data):textinput_data.get(text)max_lengthinput_data.get(max_length,130)summarysummarizer(text,max_lengthmax_length,min_length30)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参数}# 执行核心逻辑resultfetch_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_KEYos.getenv(STOCK_API_KEY)CACHE_TTLint(os.getenv(CACHE_TTL,300))3. 添加缓存提升性能fromfunctoolsimportlru_cacheimporttimelru_cache(maxsize100)defget_cached_price(symbol,timestamp):# timestamp用于控制缓存时间returnfetch_real_price(symbol)defexecute(input_data):symbolinput_data[symbol]cache_keyint(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调用你的Skillresponseopenai.ChatCompletion.create(modelgpt-4,messages[{role:user,content:苹果股价多少}],functions[skill_schema])方式2本地Skill框架# skill_loader.pyimportimportlibimportjsonclassSkillManager:def__init__(self):self.skills{}defregister_skill(self,name,module_path):moduleimportlib.import_module(module_path)self.skills[name]module.executedefexecute(self,skill_name,input_data):ifskill_namenotinself.skills:return{error:fSkill{skill_name}not found}returnself.skills[skill_name](input_data)# 使用managerSkillManager()manager.register_skill(stock,stock_skill)resultmanager.execute(stock,{symbol:AAPL})实战练习开发一个计算器Skill# calculator_skill.pyimportredefexecute(input_data): 支持基础运算和表达式 输入: {expression: 2 3 * 4} expressioninput_data.get(expression,)# 安全检查只允许数字和运算符ifnotre.match(r^[\d\s\\-\*\/\(\)\.]$,expression):return{success:False,error:表达式包含非法字符}try:# 安全执行注意实际生产应使用ast.literal_eval或math库resulteval(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 解决具体问题 稳定可靠 易于集成。

更多文章