GLM-4-Flash 大模型API免费了,手把手构建“儿童绘本”应用实战(附源码)

老牛同学刚刷到了一条劲爆的消息,GLM-4-Flash大模型推理 API 免费了:https://bigmodel.cn/pricing

GLM-4-Flash免费

老牛同学一直觉得上次阿里云百炼平台为期 1 个月免费额度的“羊毛”已经够大了(太卷了,阿里云免费 1 个月大模型算力额度,玩转 Llama3.1/Qwen2 等训练推理),但经过老牛同学在智谱 AI 官网反复确认之后,竟然不是标题党,它是真的免费,感觉大模型厂商的“羊毛”简直是没有最大,只有更大(老牛同学这次要站智谱 AI 这边)!

老牛同学本地部署推理和体验的大模型有很多,且第一个就是GLM-4-9B(是的,比Qwen2-7B还要早一些),也一直关注着智谱 AI 推出的大模型:

  • 第一次是 6 月 8 号:GLM-4-9B大模型开源,且推理能力亮点突出,老牛还写了一篇本地部署推理的文章(本地部署 GLM-4-9B 清华智谱开源大模型方法和对话效果体验),由于当时GLM-4本地部署门槛还有点高,因此这篇文章还获得了不少网友的关注,老牛同学也收到不少网友的关于部署过程的私信和留言
  • 第二次是 7 月 9 号(1 个月后):GLM-4-9B支持通过 Ollama 部署(https://ollama.com/library/glm4),本地部署和推理的门槛降低不少,因此老牛同学顺势写了一篇普及 Ollama 使用的文章,文章中案例就是用GLM-4-9B(Ollama 完整教程:本地 LLM 管理、WebUI 对话、Python/Java 客户端 API 应用)
  • 第三次是 8 月 27 号也就是今天(差不多也是 1 个月后):智谱 AI 大模型开放平台官网(https://bigmodel.cn/)宣布GLM-4-Flash大模型 API 免费使用,这不又激起老牛同学的兴致,也因此有了本文

从老牛同学微观视角我们可以看到,智谱 AI 从开放开源大模型、到降低大模型使用门槛、在到面向大众免费,不段在诠释着技术进步普惠 AI,就如智谱 AI 的愿景那样:实现“让机器像人一样思考”,让技术更好地服务社会,打造支持不同场景、不同方向的智能应用程序的底层人工智能架构,不断开拓努力实现人工智能的行业普惠。

GLM-4-Flash免费了,我们除了高兴和感慨之外,羊毛不常有,我们总得要“薅”一把。这次老牛同学就不做微调了,咱们来做一个我们生活场景:儿童绘本应用!

大家可能会问,为什么选择儿童绘本这个方向呢?其实原因一点都不复杂:老牛同学一时半会儿也没有想到好的创意(特别期待大家留言新创意,老牛同学愿意协助实现);再者老牛同学家绘本要又更新了(存量的绘本小孩都读腻了);并且这个应用不是很复杂,不至于一篇文章还写不完,还要有续集。如果我们能基于免费的大模型 API 能力,随时生成不同的儿童绘本,岂不是妙哉?

针对“儿童绘本”应用,老牛同学的构思如下:

  1. 面向7~10小朋友,绘本构思由大模型产出,最好能与当前热点相关(如:最近火爆天的黑神话·悟空游戏)
  2. 绘本故事内容也由大模型产出,需要积极向上,饱含正能量
  3. 绘本情节结构分为 4 个段,每个段 300 个汉字左右,整个绘本不超过 1500 个汉字
  4. 每一段绘本情节均需要配一张插图
  5. 最后:绘本内容和图片存储到电脑本地磁盘

儿童绘本应用中,我们需要用到 2 个大模型:

  • GLM-4-Flash大语音模型,主要是提供绘本构思和产出绘本内容
  • CogView-3文生图大模型,主要是生成绘本插图

儿童绘本应用流程

确定了应用内容,我们就开始行动了~

注册&申请 API Key

想要使用大模型推理 API,我们首先得拿到 API Key,打开智谱 AI 开放平台官网:https://bigmodel.cn/

完成注册和实名认证后,我们打开控制台,即可复制 API Key 了:https://bigmodel.cn/usercenter/apikeys

新增和复制API Key

我们可以把复制的 API Key 放到环境变量中(老牛同学的环境变量名:ZhipuAI-APIKey),免费在代码里硬编码,下面老牛同学代码演示均从环境变量获取!

API 调用前置准备和配置

这部分包括 Python 环境准备、SDK 依赖包安装和 API 验证:

Python 研发环境

工欲善其事,必先利其器,我们通过Miniconda管理 Python 虚拟环境,Miniconda的安装和使用可以参考老牛同学之前的文章:大模型应用研发基础环境配置(Miniconda、Python、Jupyter Lab、Ollama 等)

第一步:设置 Python 虚拟环境:

# Python虚拟环境名:ZhipuAI,版本号:3.10
conda create --name ZhipuAI python=3.10 -y# 激活虚拟环境
conda activate ZhipuAI

第二步:安装 Python SDK 依赖包

pip install zhipuai -U

以上简单的 2 步,我们即完成了前期环境准备工作了,接下来我们简单验证一下准备工作是否达标:

开放平台 API 验证

# GLM-4-Flash-Test.py
from zhipuai import ZhipuAI
import os# 环境变量中获取API Key内容
client = ZhipuAI(api_key=os.environ.get('ZhipuAI-APIKey')
)# 使用GLM-4-Flash大模型进行验证
response = client.chat.completions.create(model='glm-4-flash',messages=[{'role': 'user', 'content': '你好,我是老牛同学,请问你是谁?'},],stream=True,
)# 流式输出
for chunk in response:print(chunk.choices[0].delta.content, end='')print('')

执行验证代码,可以看到如果输出:python GLM-4-Flash-Test.py

>python GLM-4-Flash-Test.py
你好,老牛同学!我是人工智能助手智谱清言,很高兴为您服务,有什么可以帮助您的吗?

原来智谱清言就是GLM-4的端应用名,又涨了一点姿势~

最后,我们可以查看 API 接口文档,准备我们的儿童绘本应用的研发了:

大模型接口文档

GLM-4-Flash接口文档:https://bigmodel.cn/dev/api#glm-4

CogView-3接口文档:https://bigmodel.cn/dev/api#cogview

“儿童绘本”实战 1:绘本构思

“儿童绘本”应用实战的第一步,就是我们给大模型提供一个主题(如:黑神话·悟空),让大模型产出绘本构思:GLM-4-Flash-Idea.py

# GLM-4-Flash-Idea.py
# 构造客户端
def make_client():return ZhipuAI(api_key=os.environ.get('ZhipuAI-APIKey'))#
# 第一步:使用GLM-4-Flash大模型产出创意
#
def make_idea():response = make_client().chat.completions.create(model='glm-4-flash',messages=[{'role': 'system', 'content': '你是一位儿童绘本的内容创意专家,你的任务是根据用户提供的主题,提供适合7岁到10岁小学生阅读的、专业的、有见地的绘本内容创意。'},{'role': 'user', 'content': '请以“黑神话·悟空”这款最近热门的游戏为主题,提供儿童绘本创意。要求:绘本分为4个小段,每个小段需要有插图。'},],stream=True,)# 流式输出idea = ''for chunk in response:idea += chunk.choices[0].delta.contentreturn idea# 运行
if __name__ == '__main__':idea = make_idea()print(idea)

和大模型推理 API 验证的代码相比,就只是 Prompt 提示不一样。有关 Prompt 提示词编写小技巧,可以查看老牛同学之前的文章:高效编写大模型 Prompt 提示词,解锁 AI 无限创意潜能

运行以上绘本创意代码的结果如下:python GLM-4-Flash-Idea.py

黑神话·悟空绘本创意

从提供的创意结果来看,GLM-4-Flash还是有 2 把刷子,产出的创意非常完整,包括:绘本名称、绘本简介、绘本内容、故事内容和绘本特点。面面俱到,比老牛同学的设想要丰富多了:

绘本名称:《悟空探秘之旅》绘本简介:
这是一本以热门游戏《黑神话·悟空》为背景的儿童绘本,通过四个小故事,带领孩子们进入一个充满神话色彩的西游记世界,体验悟空 的英勇与智慧。绘本内容创意:第一段:《悟空的起源》
插图:孙悟空石破天惊地从石头中蹦出来,周围是五彩斑斓的花草和神秘的森林。故事简介:绘本开始讲述孙悟空的诞生,描述了石猴如何从一块神奇的石头中蹦出来,开始了他的奇幻之旅。第二段:《猴王争霸》
插图:孙悟空挥舞金箍棒,与群猴比试,最终成为猴王。故事简介:孙悟空在花果山与众猴比试,凭借智慧和力量,成为猴王,得到众猴的尊敬。第三段:《取经之路》
插图:孙悟空带领唐僧、猪八戒和沙僧四人西行取经,路上遇到妖魔鬼怪。故事简介:孙悟空带着唐僧师徒四人踏上取经之路,他们历经九九八十一难,勇敢地战胜了各种妖魔鬼怪,保护师傅安全。第四段:《悟空归来》
插图:孙悟空在取得真经后,回到花果山,与众猴欢聚一堂。故事简介:孙悟空取得真经后,回到花果山,与众猴庆祝胜利,展示了他英勇无畏、智慧过人的品质。绘本特点:
1. 故事情节紧凑,富有想象力,吸引孩子们阅读。
2. 插图色彩鲜艳,画面生动,有助于培养孩子们的审美观。
3. 故事融入了传统神话元素,传承了中华民族的优秀文化。
4. 通过孙悟空的成长历程,教育孩子们勇敢、智慧、团结的重要性。

“儿童绘本”实战 2:绘本内容

“儿童绘本”应用实战的第二步,就是根据第一步提供的创意,完善故事内容情节:GLM-4-Flash-Content.py

# GLM-4-Flash-Content.py# ..... 前面省略#
# 第二步:使用GLM-4-Flash大模型生成故事内容
#
def make_content(idea:str):response = make_client().chat.completions.create(model='glm-4-flash',messages=[{'role': 'system', 'content': '你是一位儿童绘本的故事内容编写专家,你编写的故事幽默有趣,特别适合7岁到10岁的小学生阅读,你的任务是根据用户提供的儿童绘本创意,完成编写的整个故事内容。'},{'role': 'user', 'content': f'请根据儿童绘本创意,完成编写整个故事内容。\n\n故事内容要求:\n故事内容分为4个小段,每个小段500个汉字左右,故事总长度不得超过2000个汉字。\n\n儿童绘本创意:\n{idea}'},],stream=True,)# 流式输出content = ''for chunk in response:content += chunk.choices[0].delta.contentreturn content# 运行
if __name__ == '__main__':idea = make_idea()content = make_content(content)print(content)

和第一步的代码类似,我们主要是调整了 Prompt 提示词。Prompt 提示中,创意的内容完全复制第一步的内容,一个字都不需要修改。

运行以上绘本故事内容代码的结果如下:python GLM-4-Flash-Content.py

黑神话·悟空绘本故事内容

还别说,故事内容还算有模有样:

# 《悟空探秘之旅》这是一本以热门游戏《黑神话·悟空》为背景的儿童绘本,通过四个小故事,带领孩子们进入一个充满神话色彩的西游记世界,体验悟空 的英勇与智慧。# 第一段:《悟空的起源》在一个遥远的时代,有一块五彩斑斓的石头,静静地躺在花果山的山顶上。这石头非同小可,它吸收了天地精华,蕴含着无尽的能量。一天,石头突然炸裂开来,从中蹦出一个石猴,他的眼睛里闪烁着好奇的光芒。石猴出生后,就与周围的猴子们玩得不亦乐乎。他聪明伶俐,机智过人,很快便成为了猴群中的领袖。有一天,石猴突发奇想,他想要找到自己的起源,于是开始了他的奇幻之旅。# 第二段:《猴王争霸》石猴带着对未知的渴望,来到了一座神秘的山洞。他发现这个山洞里隐藏着许多宝藏,于是便决定在这里建立自己的家园。然而,这座山洞并不容易占据,其他猴子也觊觎着这里的宝藏。石猴决定与这些猴子们一较高下,他挥舞着金箍棒,与群猴比试。凭借着过人的智慧和力量,石猴最终战胜了所有对手,成为了猴王。众猴们纷纷向他致敬,花果山也因此成为了猴子们的乐土。# 第三段:《取经之路》时光荏苒,石猴渐渐长大,他渴望着更多的冒险。一日,石猴在山林中遇到了一位云游四方的和尚唐僧。唐僧受佛祖旨意,要前往西天取经。石猴决定跟随唐僧,一同踏上取经之路。在这条路上,他们遇到了无数妖魔鬼怪。孙悟空凭借着他的智慧和勇气,带领着唐僧、猪八戒和沙僧四人,战胜了一个又一个的困难。他们历经九九八十一难,终于来到了西天,取得了真经。# 第四段:《悟空归来》孙悟空取得真经后,带着唐僧师徒四人回到了花果山。猴群们为他们举行了盛大的庆祝活动,欢声笑语充斥着整个山林。孙悟空在这次冒险中,不仅收获了真经,更赢得了众猴的尊敬和爱戴。孙悟空的成长历程,让所有孩子都为之动容。他英勇无畏、智慧过人的品质,成为了孩子们心中的英雄。而《悟空探秘之旅》这本书,也成为了孩子们传承中华民族优秀文化的瑰宝。

“儿童绘本”实战 3:绘本插图

绘本插图我们需要用到另外一个大模型:CogView-3,它可以根据文本生成图片。可惜的是,它并不免费,它的收费标准如下:

CogView文生图收费标准

我们本次需要四张插图,因此预计收费0.4 元,为了能更好的演示如何构建绘本应用,老牛同学觉得收费是值得的。

在插图图片生成之后,我们需要保存到本地,因此我们需要安装一下 Python 依赖:

pip install requests -U

下面,我们通过调用CogView-3文生图大模型,生成故事每小段的插图:GLM-4-Flash-Illustration.py

# GLM-4-Flash-Illustration.py
from zhipuai import ZhipuAI
import os
import requests# ..... 前面省略# 存储图片到本地
def download_image(url, save_path):print(f'开始下载图片: {url}')# 发送 HTTP 请求response = requests.get(url, stream=True)# 检查请求是否成功if response.status_code == 200:# 以二进制模式打开文件with open(save_path, 'wb') as file:# 将图片内容写入文件file.write(response.content)print(f'图片下载成功: {save_path}')else:print('图片下载失败.')# 生成图片
def make_illustration(idea:str):item_list = ['第一段', '第二段', '第三段', '第四段']for item in item_list:response = make_client().images.generations(model='cogview-3',prompt=f'你是一位儿童绘本插图绘画专家,你画的插图紧贴绘本的创意,插图色彩鲜艳,画面生动,有助于培养7岁到10岁的小学生的审美观。\n\n下面是一个儿童绘本的创意,共有4个小段,请为“{item}”画一张插图:\n\n{idea}')image_url = response.data[0].urlprint(f'{item}插图地址:{image_url}')# 图片目录image_dir = os.path.join(os.getcwd(), 'assets')os.makedirs(image_dir, exist_ok=True)# 图片路径save_path = os.path.join(image_dir, f'{item}.jpg')# 下载存储图片download_image(image_url, save_path)# 运行
if __name__ == '__main__':idea = make_idea()make_illustration(idea)

黑神话·悟空绘本故事插图

最终,我们可以看到本地磁盘,有 4 张绘本插图:

黑神话·悟空绘本故事插图

“儿童绘本”实战 4:绘本存储

最后,我们只要把绘本故事内容和插图组织起来,就是一本完整的绘本了。老牛同学使用 Markdown 格式,然后用网上 Markdown 渲染,可以看到最终绘本内容:

我们把以上代码实例编织起来,就是一个完整的基于大模型的儿童绘本应用程序了,整体结构如下:

# GLM-4-Flash.py
from zhipuai import ZhipuAI
import os
import requests# 构造客户端
def make_client():# ...略#
# 第一步:使用GLM-4-Flash大模型产出创意
#
def make_idea():# ...略#
# 第二步:使用GLM-4-Flash大模型生成故事内容
#
def make_content(idea:str):# ...略#
# 第三步:使用CogView-3大模型生成故事插图
## 存储图片到本地
def download_image(url, save_path):# ...略# 生成图片
def make_illustration(idea:str):# ...略# 运行
if __name__ == '__main__':# 1. 绘本构思print('----------------------------- STRT:绘本构思 -----------------------------')idea = make_idea()print(idea)print('----------------------------- 绘本构思:END ------------------------------')# 2. 绘本内容print('----------------------------- STRT:绘本内容 -----------------------------')content = make_content(idea)print(content)print('----------------------------- 绘本内容:END ------------------------------')# 3. 绘本插图print('----------------------------- STRT:绘本插图 -----------------------------')make_illustration(idea)print('----------------------------- 绘本插图:END ------------------------------')

我们的儿童小绘本应用到此总体就完成了,老牛同学主要是介绍如何使用 AI 完成我们的构思,因此整体有点粗糙,请大家见谅,我们接下来可以进一步优化:

  1. 能否自动生成 Markdown 文件,并且把 Markdown 自动转换为其他格式文件(如:PDF 文件)
  2. 能否对接我们的智能家居设备,自动读我们生成的故事(如:天猫精灵、小爱同学等)
  3. 更进一步,智能家居读故事的音色,能否模拟我们自己,让孩子们在听故事时,就感觉是自己的爸爸妈妈在读一样?
  4. 在进一步,能否设计一款 APP,支持只需一个主题,自动完成绘本创作、并且能播放?

以上几点,老牛同学后续有机会,在发文介绍,大家如果感兴趣,也可以与老牛同学私信,我们可以探讨完成!

最后:智谱 AI 为什么要第一个吃“免费”螃蟹?

据老牛同学所知,GLM-4-Flash是第一个免费的大模型 API,从前面我们模型部署经验来看,大模型部署和推理对资源的要求较高,那么智谱 AI 为什么要这么做呢?老牛同学觉得有以下几点:

  1. 智谱 AI 技术进步,让GLM-4-Flash大模型推理成本降到了一个足够低的水平,以至于收费也赚不到什么钱,还不如干脆大方一点全免费,在国内大模型发展的初期,抢占先发优势,给自己赚个好口碑的同时,吸引更多的大模型使用者、爱好者、研究者。
  2. 智谱 AI 不忘初心,坚持自己的愿景,让 AI 普惠所有人。前期的开源、降门槛粒度还不够,免费有可能是终极手段。
  3. 智谱 AI 自信于自己技术,通过自己的免费举措,逐步带动其他大模型厂商降低大模型的门槛,争做 AI 大模型的弄潮儿。

本文实例源代码:https://gitee.com/obullxl/SunningTX/tree/master/PythonTX/GLM-4-Flash

vLLM CPU 和 GPU 模式署和推理 Qwen2 等大语言模型详细教程

MiniCPM-V 2.6 面壁“小钢炮”,多图、视频理解多模态模型,部署和推理实战教程

基于 Qwen2/Lllama3 等大模型,部署团队私有化 RAG 知识库系统的详细教程(Docker+AnythingLLM)

使用 Llama3/Qwen2 等开源大模型,部署团队私有化 Code Copilot 和使用教程

基于 Qwen2 大模型微调技术详细教程(LoRA 参数高效微调和 SwanLab 可视化监控)

微信公众号:老牛同学

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788226.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CoreShop---.NET、Uni-App开发支持多平台的小程序商城系统

前言 小程序商城系统是当前备受追捧的开发领域,它可以为用户提供一个更加便捷、流畅、直观的购物体验,无需下载和安装,随时随地轻松使用。今天给大家推荐一个基于.NET、Uni-App开发支持多平台的小程序商城系统(该商城系统完整开源、无封装无加密、商用免费、支持二次开发、…

SQL server 特殊字符\u0000处理

某天,接到用户反馈点击某个项目分组的时候页面报错,点击其他项目不报错。初步以为是下标数字特殊符号导致的。通过前台输出对应的数值后发现该字段末尾有个“\u0000”特殊字符(ASCII字符char(0))。通常是导入数据时的格式问题或是程序处理时将页面中的换行字符保存数据库导…

Kettle: pentaho-server-ce-9.4 连接失败:ConnectionServiceImpl.ERROR_0009

pentaho-server-ce-9.4 数据库连接MYSQL8.0.37 , 测试连接失败, 提示: ConnectionServiceImpl.ERROR_0009-Connection to database [MYSQL8] failed .pentaho-server-ce-9.4 数据库连接MYSQL8.0.37 , 测试连接失败, 提示: ConnectionServiceImpl.ERROR_0009-Connection…

蓝桥杯补档

2013 省B P8597 翻硬币 H 一排硬币给出初态和终态,每次只能翻转相邻的两枚,求最少多少次 用贪心,因为翻转两次相当于没翻,所以最优方案中同一组硬币肯定最多翻转一次,所以翻转顺序无后效性。从前往后翻,只要不一样就把它和它后面的硬币都翻转一次,计数器累加2023 省A P9…

.NET周刊【8月第4期 2024-08-25】

国内文章 从控制台开始 关联 Win2D 和 WinUI 3 应用 https://www.cnblogs.com/lindexi/p/18378612 本文将告诉大家如何从最简单的控制台开始搭建,让 Win2D 和 WinUI 3 关联起来,让 Win2D 可以将内容渲染到 WinUI 3 应用上。 为何 Thread.Sleep 半毫秒和一毫秒等待时间差距如此…

注解的优点?元注解?

介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解。主要作用如下:编写文档——通过注解中标识的元数据可以生成doc文档,这是最常见的,也是java 最早提供的注解。常用的有@param @return 等代码分析—…

【Azure Developer】如何在Azure门户上把当前账号下的所有资源信息列举并导出呢?

问题描述 是否可以在Azure上,一次性把当前账号所有能查看的资源都导出来呢?包含资源名称,类型,定价层SKU信息呢?问题解答 是的,通过Azure Resource Graph Explorer服务可以实现。Azure Resource Graph Explorer 是一个强大的工具,旨在提供跨订阅的资源查询和治理。它允许…

[COCI2013] hiperprostor 题解

前言 题目链接:Hydro & bzoj;黑暗爆炸。 题意简述 \(n\) 个点 \(m\) 条边的有向图上,第 \(i\) 条边的边权被表示为 \(k_i x + b_i\),其中 \(x\) 为一正整数。有 \(q\) 次询问,求出当 \(x\) 取值不同时,\(S\) 到 \(T\) 最短路的值有多少种,以及和为多少。如果最短路的…

c10-8.24课程作业

4、以下哪个口令不是弱口令? D

生产者消费者模式,以及基于BlockingQueue的快速实现

生产者消费者模式,以及基于BlockingQueue的快速实现什么是生产者消费者模式,简单来说就是有两个角色,一个角色主要负责生产数据,一个角色主要负责消费(使用)数据。那么生产者直接依赖消费者,然后直接调用是否可以?答案是可以的,但是有些场景无法及时解决,典型的就是生…

ETL语句

ETL(Extract, Transform, Load)是数据处理工作的重要组成部分,即提取、转换、加载(从一个地方提取数据,通过转换,加载到另一个地方)。通常可以使用SQL语句实现