CLI Agent研究笔记——我们这一代想听什么都是自己编的 --知识铺
结论放前面:通过CLI Agent,实现一个对话生成歌曲的小应用。过程我只负责设计了一套提示词,以及粘贴了一些文档。
实现方法过程其实很简单,suno是一个比较流行的歌曲生成应用,我们这次使用deepseek生成歌词,然后接入到suno即可。在ai帮助下,过程没有难度,只有细节。
生成歌词的提示词设计
虽然suno也有生成歌词的接口,但因为我们要封装自己的应用,使用deepseek可以最大程度地进行生成逻辑的自定义。
我没有进行过音乐创作,所以并不清楚应该怎样设计提示词,但没关系,网上简单找找发现一个专门生成suno歌词的网站https://sunoprompt.com/zh,它可以生成歌词,但这个网站没有提供接口,很难自动化。
那我们用大模型反推一下
每一版本提示词我都会放到deepseek里面测试,几轮拉扯获得一版看上去还行的提示词
获得的提示词:
<span leaf="">You are a talented music composer. Create compelling song lyrics based <span class="code-snippet__keyword">on user requirements.
密钥和文档准备
提示词解决了,现在我们去对应的开发平台创建一下连接密钥以及把相关的文档收集一下就行
秘钥是你连接大模型的凭据,相当于是一个账号,用于模型提供商计取费用
文档用于指导ai干活,其实现在模型能力挺强,连接deepseek并不需要提供文档,但因为大模型提供商有时会更新知识,所以将最新的文档提供给ai,可以提高一次成果率
首先是DeepSeek,访问开发平台,创建key,文档可以在直接粘贴这个
然后是suno,访问开发平台,注册完后平台就会创建好一个。
这个文档复杂一些,我们要找到两页,一个是创建音乐
一个是查询音乐生成详情
不熟悉开发的同志到这一步可能会很疑惑,但这其实是个固定套路,很多生成类接口都是这样设计的,因为生成过程需要等待,第一个接口用来创建生成任务,第二个接口用来查询生成好没有,这种方法叫轮询
将秘钥和文档都保存好
嘿!兄弟起来干活了
打开vscode,创建一个新项目文件夹,将密钥和文档都放到里面。
打开claude,我的好同志,该你干活了。
我的启动输入:
我计划做一个音乐播放器,这个播放器通过ai生成歌曲并播放,现在我们先来完成界面设计,不用考虑如何实现,先设计一个音乐播放器页面,铺面整页,左边是播放列表,中间是播放区,右边是对话区(用于让用户与ai对话)
不需要改,我们继续让ai实现对接,继续输入:
现在我们来处理生成逻辑,实现方法如下,
1,用户输入,使用deepseek生成歌词
2,使用歌词,通过suno生成歌曲
deepseek和suno的对接方法我分别写在了deepseek.txt和suno文件夹中
注意suno通常使用回调的方法获得结果,但这次我们使用轮询的方法,调用V5模型
生成歌词的提示词,我写在了LyricsGenerationFrameworkPrompt.txt中
对接完成,测试也通过,最后我做了一些小的迭代,让ai加上下载功能,并且可以持久化列表,防止刷新后丢失数据,下面是生成的其中两首歌曲
写在最后
这个应用也是一个浅尝,实际上需要考虑更加多工程化问题,其实关键点不在于各个系统(DeepSeek和suno)的对接,而在于产品本身的设计,例如我们应该更加系统的设计生成歌词的提示词——增加歌词的深度,加入更多的suno功能,例如不停对话,精修歌曲等等,作为一个音乐门外汉,也可以快速实现这样的ai能力,相信在真正的专家面前,一定可以实现更加强大的应用。
- 原文作者:知识铺
- 原文链接:https://index.zshipu.com/ai002/post/20251015/CLI-Agent%E7%A0%94%E7%A9%B6%E7%AC%94%E8%AE%B0%E6%88%91%E4%BB%AC%E8%BF%99%E4%B8%80%E4%BB%A3%E6%83%B3%E5%90%AC%E4%BB%80%E4%B9%88%E9%83%BD%E6%98%AF%E8%87%AA%E5%B7%B1%E7%BC%96%E7%9A%84/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。
- 免责声明:本页面内容均来源于站内编辑发布,部分信息来源互联网,并不意味着本站赞同其观点或者证实其内容的真实性,如涉及版权等问题,请立即联系客服进行更改或删除,保证您的合法权益。转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。也可以邮件至 sblig@126.com