【Datawhale AI夏令营第四期】 魔搭-大模型应用开发方向笔记 Task03 人话八股文Bakwaan_Buddy项目开发尝试
Idea:
我们草台班子目前的想法是解决大家计算机学院毕业面临的BUG——不爱背、背不下来八股文,觉得枯燥、烦、工作了用不着,反正就是知识他不进脑子。收藏从未停止,学习从未开始。
如果是外行不知道啥是计算机八股文的话,可以看看下面的这个视频:
《八股文怎么背 一个视频告诉你 还不明白直接掏我》:https://www.bilibili.com/video/BV1w6vQecEjN/?spm_id_from=333.1007.tianma.1-1-1.click&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
传送门
数据集来源:
我们定项目主题之前就焦虑了这个问题很久,本来想做英语作文批改AI,但是已经有太多人做过了。计算机八股文这块目前好像还没有很普遍的AI应用,而且数据集也完全不缺——力扣、牛客上的八股文遍地都是,我们还能在收集数据的同时顺便复习计算机专业知识。
我目前想到设计有2个功能,一个是用户输问题,八股文AI用人话来解释,比如说你问多态的知识,大模型就拿动物类别下面的狗和猫来举例。
另一个功能是“随机八股文生成器”,比如说在等地铁啥的,打开AI,点击一个按钮,他就吐一段八股文相关的知识背景和故事。(灵感来源于我学校图书馆的故事机,三个按钮根据需要可以吐出1分钟,3分钟,5分钟的随机故事。那么AI也可以仿照这个设计吐出一段随机八股文来满足利用碎片时间复习的需要。)
但是要让AI稳定地用人话表述八股文这点,很大程度上我感觉要依赖模型本身的能力。如果是和GPT一样全能的话,其实只需要前端做个按钮,每次点击都发给后端,例如“帮我用人话举例子,解释用户输入的这段计算机八股文”之类的提示词也许都行了。
如果AI本身能力不够的话,可能要先拿别的AI做出很多的八股文-人话的数据集例子,喂给这个AI做训练。
为此我还专门查了一个我很好奇的问题:AI做出来的东西能继续喂给AI么?
虽然Idea好歹是混出来了,但其实我还是很懵逼,不知道我从零基础到完成开发工作【需要做什么】。
然后我又开始到处查资料和问AI。
主办方B站账号:二次元的Datawhale
这有很多以往直播分享的回放。
https://space.bilibili.com/431850986
传送门
《2024 AI夏令营 第四期|【动手学大模型应用全栈开发】大咖分享:LLM项目的分类和原理解析》
https://www.bilibili.com/video/BV12y411e7QR/?spm_id_from=333.999.0.0&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
传送门
这个视频里面介绍了一些适合小白的项目类型:
Prompt项目:
感觉就是写提示词,比如AI之前不知道小红书文案怎么写,但是下图左边告诉他有emoji和标题党,相当于是把一个新概念很好地传达给了AI,然后AI就达到了目的。下图右边是一个信达雅的翻译调教,比直译要好。
发现很不错的prompt可以固定下来,以后每次访问可以直接调用(?),其实就是各家GPT商店的生态、
这个我之前没见过,所以有点没懂,是指写好了能让AI一步到位的提示词,然后别人付费查看、复制吗?
没关系,不懂是吧,我把我笔记的这一段都喂AI,让通义千问理解一下我描述的这是在干啥!
果然,跟我脑内预想的差不多。
我让AI给我列出了一些网址,然后随机点了一个。
https://promptbase.com/?spm=5176.28103460.0.0.7abc572cKaWrUz
传送门
这个网站就是专门卖AI提示词的,用于MidJourney绘画的较多,用户购买了提示词以后就可以根据作者的示例(绘圈叫Sample,类似于报价参考作品集),生成风格近似的高定图片。
比如我希望做一款港风海报,用来宣传我的小红书,我就可以从这选择合适的特定画风,买下prompt,根据我的需要修改下,然后让MidJourney生成类似风格的作品。
但这个工作我感觉,可能(?)很容易被替代,因为prompt需要的主要工作是打字和组织关键词,刚用AI绘画可能没经验,后面玩久了买多了,修改一下,微调几个形容词,天赋高的也许自己都会写了。
如果之前做过数据标注、AI训练师的话,写好的提示词是这个打螺丝工作的必备技能。不然你让AI生成一些负面答案做数据集(这个正反都有的数据集会给另一个AI学习,让那个AI知道啥该说啥不该说),结果AI每次都只能疯狂道歉的话,那就只有自己绞尽脑汁编了。
通义千问给的所有prompt售卖链接
目前市场上确实存在一些平台或社区,允许用户分享和交易预先编写好的提示(Prompts)。这些平台通常围绕着特定的AI模型或应用领域展开。虽然专门针对Prompt交易的“商店”可能不是非常普遍,但有一些地方可以找到相关的资源和服务。以下是一些例子:
Hugging Face Hub:
网址: https://huggingface.co/
描述: Hugging Face是一个非常活跃的社区,提供了大量的预训练模型以及相关的工具。虽然它主要侧重于模型本身,但也有一些关于如何使用模型的示例和教程,其中包括了不同的提示(Prompts)。
PromptBase:
网址: https://promptbase.com/
描述: PromptBase 是一个专门针对AI提示的市场,用户可以买卖各种类型的提示,适用于不同的应用场景和目的。这是一个比较直接的例子,符合你所说的“商店”。
PromptHero:
网址: https://prompthero.com/
描述: PromptHero 提供了一个平台,让用户可以探索、创建和分享各种各样的提示。它也包括了一个社区部分,用户可以在其中交流和学习如何更有效地使用AI。
GitHub:
网址: https://github.com/
描述: 虽然GitHub不是一个专门的商店,但许多开发者会在此分享他们的AI项目代码,包括使用特定提示的示例。你可以在GitHub上搜索相关的仓库来获取灵感。
Reddit:
网址: https://www.reddit.com/
描述: Reddit上有多个社区(subreddits)专注于AI和机器学习,比如r/MachineLearning、r/AI和r/NLP。这些社区经常讨论如何使用AI模型,并且有时会分享有用的提示。
Stack Overflow:
网址: https://stackoverflow.com/
描述: Stack Overflow是一个技术问答网站,用户可以在上面提问和回答与编程相关的问题。虽然它不是一个商店,但在那里可以找到有关如何使用特定AI模型的提示的讨论。
Prompt加上传统开发:
论文看不过来?没关系,大模型来翻译总结。
前端很复杂,核心类其实并不多:我看起来感觉是调用了OpenAI,隐藏了人工写一大堆提示词的费劲,直接默认做在程序里面,这样AI一打开就知道自己该干啥了。还有一些其他文件来处理论文的pdf转文本、拆分成合适的长度等基础处理。
我感觉我们的草台班子要是能做出来的话大概率也是这种,内嵌提示词的套壳应用。
ChatXXX系列:
方式1:用户输入转写为SQL语句,然后操控上传的SQL文件(存在服务器的数据库里面)。本质上就是大模型把人话变成了SQL。
方式2:用户输入变成可以直接操作表格的代码文件(比如Pandas库)然后运行。
我感觉这和JAVA的SprintBoot前后端的神奇过程有点像,IDEA那个软件跟Navicat配合,又能读又能写还能执行SQL语句,没想到AI也是这么AMAZING。
PPT是一种文件格式,可以通过代码来操控。
如果要处理的数据很多,超出token的限制怎么办?
一个方法是裁剪长文本为较短的文本,分段总结以后再进行汇总(会丢失很多语义信息);另一个方法是通过Embedding的方式。
一个老师提供的新手入门项目:
两个效果不错的Embedding模型:OpenAI的和智源的BGE。但他们都是通用的,面对医疗、法律等专业情景可能效果不佳。专业领域建议还是训练自己的Embedding模型。
后面听大佬答疑的时候感觉大佬好强,啥都知道啥都会,经验还这么丰富,我就是一条酸菜鱼,又酸又菜又多余。
另外还找到了北大卢老师的视频,介绍了非常丰富的注意事项和细节问题,但我这个新手看得实在很头大,因为我不知道该怎么上手,没啥概念。
《【大模型训练】如何从零做一个大模型应用-大模型项目整体规划 技术选型 案例分析等超实用的大模型应用开发流程》:
https://www.bilibili.com/video/BV1SM4m1S7yz/?spm_id_from=333.337.search-card.all.click&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
传送门
《如何从零搭建一个属于自己的大语言模型?训练自己的LLM最佳指南来了!保姆级教程,小白一看就会!》:
https://www.bilibili.com/video/BV1zm421G7eL/?spm_id_from=333.337.search-card.all.click&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
OpenAI这个Playgroud功能不错啊,无需编程,可以在线测试模型功能,查看其回复。
《不要浪费钱买课了,喂饭式教你训练大模型llama3》:介绍了挺多工具,但我对该如何写代码开始上手感觉还是很懵逼。
https://www.bilibili.com/video/BV17i421C7xD/?spm_id_from=333.788.recommend_more_video.1&vd_source=cdfd0a0810bcc0bcdbcf373dafdf6a82
我是万万没想到,弱智吧训练出来的模型居然是质量最高的。
最后我决定把我的技术方案和现有资料告诉通义千问,让千问帮我想想我应该怎么做。
甚至还贴心地给出了代码还有学习建议:
import streamlit as st
import requests
# 大模型API的配置
API_URL = "https://your-api-url.com"
API_KEY = "your-api-key"
def get_explanation(prompt):
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
data = {"inputs": prompt}
response = requests.post(API_URL, headers=headers, json=data)
return response.json()["result"]
def generate_random_text():
# 这里可以添加一个函数来生成随机的主题或问题
random_prompt = "请解释一下多态的概念"
return get_explanation(random_prompt)
st.title("八股文助手")
# 用户提问
user_question = st.text_input("请输入您的问题:")
if user_question:
explanation = get_explanation(user_question)
st.write(explanation)
# 随机八股文生成器
if st.button("生成随机八股文"):
random_text = generate_random_text()
st.write(random_text)
甚至还可以给我的草台班子大模型应用起名字!
因为还不知道主办方对要用的模型有什么要求,我就先拿自己之前玩过的DeepSeek试了一下,通义千问真的相当贴心,不但根据我输入的需求搞定了代码细节问题,还很周到地告诉了我该如何运行代码!
效果那叫一个相当不错!!
甚至还送了我一张工作环境图,笑死。
但是为什么他这前端好看是好看,但是我一需要他办事就报错呢??
原来是DeepSeek和OpenAI调用的参数不太一样,按这个写法找不到对应的模型!我给了他一段其他DeepSeek的代码让AI修改,这次对味了!
终于是好不容易跑起来了!先来一段随机八股文试试:
然后我们指定一下面试问题,比如问一个之前我翻车的,C#值类型和引用类型有什么区别?
前端有不少BUG,啥卡顿、显示不了历史记录、出不来消息对话界面都小事,关键是我有希望混个成果交差了先!!!
然后就是优化的过程了:比如加了个按钮“换一换”,用户要是看完了不满意,可以重新生成一条看。
然后新的结果就出来啦!
然后再加一个需求,告诉用户《别吵,我在思考!》
还挺敬业,哪怕是跟他闲聊,都不忘记宣传自己的本职工作,真是天选牛马。
前端这一块我的主张是“少即是多”,主打一个干练实用,美观大方,简洁舒适,不要整那么多花里胡哨的东西。
混了个大概功能以后下一步是不是就该考虑部署的流程了?我之前完全没有经验,问了一下通义千问,最后我想大概会将就Streamlit吧,到时候看看教程里面的步骤是怎么样。而且我现在用的模型是DeepSeek的,应该还要把模型换成主办方要求的模型。
今天详细看了一下Task03的内容,看规定了是要用浪潮大模型,意料之中,抽空得看看模型如何迁移过去,应该这少不了要通义千问帮忙。这部分内容应该会在下一次打卡之前换好……吧?(画饼)
另外本来今天还想给这个草台app加个Kimi.AI那样的联想问题功能(就是会在答案下方生成几个拓展问题),但是总是达不到预期的效果,决定先搁置这个功能。
群里的助教老师基于部署给了些参考链接,还没来得及仔细看:
关于源大模型的部署,self-llm里面提供了fastapi和vllm。fastapi搭建更快,比较推荐。vllm的话虽然性能好一些,但是环境配置比较复杂。
https://github.com/datawhalechina/self-llm/tree/master/models/Yuan2.0
更大的模型可以先用yuan2.0 m32,24g即可运行【魔搭的a10 实际只有22g】
https://github.com/datawhalechina/self-llm/tree/master/models/Yuan2.0-M32