查看原文
其他

你与AI应用开发之间,只隔着一个API密钥

郭垒 硅基流动
2024-09-14
以往,非技术人员想要开发一个AI应用,至少需要一些编程知识、调SDK工具包等基础能力,这让不少人望而却步,哪怕有一部分人出于热情学习了基础知识与开发流程,但在实操中也会由于出现的各类操作问题很快失去兴趣。

随着大模型的出现,现在很多传统AI应用开发的复杂流程都不复存在。尤其是,有了硅基流动SiliconCloud这样的大模型API平台之后,更是大幅提升了开发效率,你与AI应用开发之间的门槛,可能只隔着一个API密钥。

那么,如何使用这一密钥帮你跨越AI应用开发的大门?本文作者郭垒从初级AI开发者的视角出发,通过一些真实的AI应用开发案例,分享了如何基于SiliconCloud把大模型能力引入到这些应用。无论你是初学者还是对AI开发有基本了解的爱好者,不妨按他的描述尝试实现一个简单应用,如他所言,或许并没有想象中那么难。

(本文经作者授权后发布。原文:https://guoleilei.notion.site/AI-af9e1461aee6465793ddcb61fb323cd3)

作者|郭垒


初识 AI 开发:从生成一个标题开始


我有这样一个东西。通过 iOS 快捷指令获取一段文字输入,方式可以是输入框、语音转文字、或是读取剪贴板,然后调用 Notion 的 API 插入到 Notion 的 Database 中。类似任意一个笔记 App,当你输入一段文字,然后就多一条记录。
然后我遇到了一个小问题,每张笔记卡片其实都有标题属性。目前,标题都还空着。这不是什么大问题,但是感觉如果有一个标题会更好一点,但我又不想在快捷指令流程里加一个输入标题的环节。
正好看到朋友圈和即刻都有推广硅基流动SiliconCloud的活动我想,是不是可以用 AI 来从文本里提取一个页面标题呢?感觉可行性很高。
说干就干。
1.打开官网(https://cloud.siliconflow.cn/)进行注册。
2.点开文档,跟着文档指引新建一个密钥。
3.然后打开 SiliconCloud API文档(https://docs.siliconflow.cn/docs/),粘贴密钥,填一个简单的prompt,把文本也放进去。
请帮我为下面的文字生成一个10字左右的标题###这里是一段测试文本,试图测试生成标题的效果
4.粘贴到参数里,选一个 Qwen 的模型,点运行就可以看到结果。
由于我的接口用了AWS的lambda函数,是node环境,并且自带fetch 。我就直接复制了node-fetch代码,代码也可以直接使用,简单把content拿出来就行了。
运行后,自动生成标题的功能成了。
这算一个AI开发的小例子吧。现在让我们回到开头的问题,你觉得这一套流程需要多久?

来做一下优化:输出更多信息


prompt可以优化,简单的用陈财猫老师设计的BROKE模型( Background 说明背景、Role 指定角色、Objectives任务目标、Key Results关键结果、Evolve测试prompt的输出并持续优化,具体不再展开)。
输出可以优化,尝到甜头之后我想要的更多了。我不仅要标题,我还要卡片icon、总结、关键词、分类、情感分类,以及一个可以直接解析拿来用的JSON.
最后的prompt是这样的:
我将给你一段文字,请分析并以 JSON 格式返回相关信息:### { "summary": "这里是文字内容的摘要。", "title": "根据内容生成的标题,10 字以内", "emoji": "合适的 emoji,**限 1 个**", "sentiment": "情感分析结果,如'positive', 'negative', 'neutral'。", "keywords": ["关键词1", "关键词2", "..."], "categories": ["主题1", "主题2", "..."] } ### 要求:1. 你的输出将直接用于程序解析,请不要用任何标记语言,严格按照上述格式返回纯文本的 JSON。2. 用户输入将以"###"包裹,请直接分析,不要对话。
### ${content} ###
担心JSON输出可能不稳定?毕竟不是程序生成,可能还是会出现字段没对上或者响应不能直接解析的情况。
没关系。解析不了就重新让它生成一下,简单粗暴(实际上Qwen2-72B生成JSON的效果很好)。最后的代码可能类似这样:
export async function handleContent(content, isRetry = false) { try { // 获取 GPT 响应 const gptOptions = createGptRequestOptions(content); const gptRes = await http.post(gptOptions.url, gptOptions.data, { headers: gptOptions.headers, }); // 相当于从响应里把对话的文字拿出来 const gptMessage = gptRes.choices[0].message.content;
// 直接解析并拿来构建 notion api 请求 const notionBody = createNotionRequestBody(content, JSON.parse(gptMessage)); const notionRes = await http.post( 'https://api.notion.com/v1/pages', notionBody, { headers: notionRequestHeaders } );
return notionRes; } catch (error) { // 如果出现异常,比如解析异常、请求异常等,重试 await sleep(1000); return await handleContent(content, true); }}

写脚本自动试了 300 多次,观察了一下数据都正常。收工。
测试截图
继续学习的话,结构化输出部分也可以参考  Vercel AI SDK: 生成结构化数据,另外 OpenAI 的 CEO 山姆·奥特曼在月初(8.7)也宣布官方支持直接输出 JSON 结构化数据。
即便如此,退一步讲,对于一些简单的场景,上面简单粗暴的方法能不能用?能用,且用起来还不错。
后续还能做什么呢?比如也可以每周把知识库草稿状态的东西拼一下扔给 AI,让他整理一下,补充一些文摘或者是最新信息,我想也不难处理。

再进一步:更多可能性


上面是一个简单的例子,还有没有其他可以做的事情呢?
比如,能不能重新做一个数据mock工具?用户输入要求,或是从需求稿上直接复制字段出来,让GPT生成mock数据。同理还有SQL、脚本。还可以做一个替代初级审核的AI,使用AI自动审核用户发布的贴子或者评论,评估可能造成的影响。
综合考虑成本和效果,可以针对不同的情况使用不同级别的审核策略。比如,可以先使用多个SiliconCloud的免费模型进行评估,免费模型的结果不一致时,再要求效果更好的付费模型介入。只有在AI的最终评估结果模糊时才需要人工介入。
实际上,针对不同的场景我们可以选择最适合的模型。就像近期很火的一个问题:
❓9.11 和 9.8 哪个更大
先用我开发的Silo应用来测试一下这个问题,这个应用支持多模型同时对话。我们先看输出结果:
从截图中可以看到,各个模型对这个问题的回答存在明显的差异,其中 Qwen2-Math 的回答逻辑更清晰,那对于数学问题,就可以交给Qwen2-Math去处理。另外比如代码生成方面,Claude、Deepseek-Coder 的效果会更好一点。
那问题又来了,如果我们想要在程序中使用不同领域模型的能力,是不是需要每个模型都集成对接一遍?
当然不需要。SiliconCloud提供多种模型服务,提供统一的OpenAI Compatible 的API接口,可以更加灵活的切换模型,并且提供开箱即用的大模型推理加速服务,输出速度极快。截图使用的Silo就是基于SiliconCloud API开发,在大语言模型以外,SiliconCloud也支持各种图片生成模型。
从模型的价格来看,首先,大部分模型都免费,其次,SiliconCloud付费模型也极具优势,token价格相对较低。对用户来说,现在注册就送14元额度(相当于2000万token)可用于体验付费模型,实测这14元额度够用很久了。即使是最贵的国内模型Qwen2-72B也才4.13元 / 1M,相当于能完整输出一部长篇小说。

简单介绍一下Silo


Silo是一款基于SiliconCloud API开发的多模型同时对话的应用,代码已托管在GitHub,并提供Web端和浏览器插件的使用方式。
用户可访问 https://chat.kwok.ink (站点由 Vercel 托管,部分地区可能需要代理访问),或是在Chrome应用商店搜索Silo(Edge扩展审核较慢,也可以在Chrome应用商店安装)。
Silo应用具有如下特点:
  • 基于SiliconCloud API,模型丰富,响应快

  • 一次配置,可同时跟多个大模型聊天,且模型还在持续上新中

  • SiliconCloud余额自动刷新

  • 夜间模式

  • 手机端支持(受限于屏幕尺寸,目前提供较简单的版本)

  • 纯前端实现(方便迁移、CDN部署,直连SiliconCloud服务器)

  • 模型参数调整

  • 优化的输入体验

  • 富文本展示


最重要的是对AI祛魅


我跟一个朋友说,可以试着看有什么场景搞一下,朋友说哈哈哈我不会。相信大家看到这里,就不会有这种想法了。
AI 并非高深莫测。对于还没踏进这个领域的人,我觉得最重要的可能是要对 AI 祛魅。把 AI 集成到你的程序里,切实地改善一些场景,或许也并没有想象的那么难。
你不需要一上来就要接触 RAG、Embeddings、LangChain、Agents、Tool Calling 这些东西。我们现在也经常跟 ChatGPT 类似软件聊天,这就是最普通的文本生成,所以第一步可以先把聊天框当做 Postman + server,让它直接返回你要的数据,然后试着把它搬到了代码里。
这里也推荐李开复博士联手科幻作家陈楸帆写的书《AI未来进行式》。陈楸帆老师写了10个AI相关的科幻故事,然后李开复老师会对每个故事中涉及的一些AI概念给出严谨深入的技术论述。对于扩宽思路或是了解AI整体图景来说都很有裨益。
写这篇文章时也想起来一件事。几年前一个朋友问我,如果想做语言的情感分析,需要怎么做。他想对各个电影的评论做一个分析。当时的场景下,各个云厂商都提供这种AI SDK,比如情感分析,你给它一段文字,它会给你一个JSON 数据,里面有一个值表示这句话的倾向。
现在,这种事情交给AI就方便多了。我们可能也不再需要对接单独的翻译SDK、图像识别SDK等等,甚至可以认为,这些东西已经完成了它们的历史使命,它们的研发为新技术的发展积累了宝贵经验,进而有了我们现在看到的这些不断接近AGI的东西出现。
相比于ChatGPT刚进入大众视野时,现在使用大模型的成本越来越低,速度也越来越快。大模型厂商在经历野蛮生长之后,逐渐从追求更大的参数量、上下文长度,也把目光更多的投向速度提升、结构化输出、细分领域模型、智能体等。明显可以看到的是,大模型正在加速普及。
正如SiliconCloud的愿景,加速AGI普惠人类。现在很多之前受限于成本或者技术能力的场景,都有了新的可能性。对于各个公司来说,可能会有较大的业务包袱,加AI功能要保持克制,但个人开发者的优势就是灵活。建议就把 SiliconCloud 提供的AI能力当做一把超级锤子,看到什么就砸一下,就看看会不会有用。通过快速试错来积累足够多的经验,进而培养自己在这方面的直觉。
AI正逐步成为我们生活里重要的一部分,而这一进程似乎无从阻止。尽管如此,我们应认识到AI并非魔法,以GPT为例,其看似复杂且难以捉摸的运作机制,实则不过是在尝试预测并生成下一个最合适的词语。我们应当增进对AI的理解,探索这个时代赋予我们的神奇伙伴。与其徒然仰望,不如积极参与,早日涉足其中。
从GitHub Copilot发布以来,我曾很多次为AI的发展感到精神振奋。我知道那是数字,但又常常感到那并不仅仅是数字。我也对真正的AGI充满期待,相信我们会是很好的朋友、伙伴。
ChatGPT iOS端上线之际的一段对话截图

近期更新

• 硅基流动成立这一年
• 硅基花样流动 | SiliconCloud产品体验魔法师奖公布
• 手把手教你配置OneAPI、LobeChat、MindSearch
• Embedding与Rerank模型RPM、TPM分别提升2倍、10倍
• SiliconCloud API接入实战沉浸式翻译、Dify、NextChat“三连击”

让超级产品开发者实现“Token自由”

邀请好友体验SiliconCloud
狂送2000万Token/人

邀请越多,Token奖励越多
siliconflow.cn/zh-cn/siliconcloud

扫码加入用户交流群
继续滑动看下一个
硅基流动
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存