简单coze使用体验-宝宝取名

639 阅读4分钟

背景

最近尝试实现一个给新生宝宝取名的小功能,搜了一下免费的取名软件:

  • 传统的基本都是基于字库,真对生辰八字,匹配生成几十个名字供选择,优点:速度快,名字多,缺点:无法添加更多的附属条件,例如 愿景期望,避讳字或词组等
  • 新的AI取名,可以通过提问交互,获取名,优点:能生成更针对需求的名字 缺点:速度较慢,需要有一定的propmt技巧,需要花不少时间设定上下文环境,且生成结果受到不同模型限制,例如 有的模型生成的名字中某几个字的出现频率会非常高。

简单总结,AI模式更符合需求,但是现有找到的一些应用 1.功能较为单一,输出的内容较少 2.多次生成前,需要重复组织propmt,过程比较耗时耗力。看一下coze配置不算复杂,且支持API调用,所以打算自己实现一个简单demo。

功能

  1. 接收宝宝信息,包括 '避讳字' '期望字' '典籍出处'等
  2. 生成 生辰八字以及相关解析
  3. 结合 宝宝信息,生辰八字等产出符合需求的名字
  4. 将最终结果产出为图片或pdf存档

应用组成

  1. coze Bot | 提供内容生成
  2. 前端应用 | 接收用户输入,展示最终结果
  3. API服务 | 前端应用到 coze 的数据转发和处理,生成最终结果文件(图片或pdf)

执行流程

前端输入 -> 代理服务转发 -> coze bot -> 生成内容结果 -> 代理服务返回结果 -> 前端展示

-> 请求生成结果文件 -> 代理服务打开对应模板页并生成最终结果文件

前端页面组成

  • 首页:获取宝宝数据,控制名字生成以及结果文件生成
  • 模板页:展示最终结果,并提供结果文件模板

这里选择通过HTML生成图片或pdf文件

实现效果

image.png

image.png

image.png

image.png

遇到的问题

bot 配置

配置bot将整个流程拆分成两个主要的工作流,输入内容 -> 生辰八字 -> 取名 -> 最终结果,本打算通过触发器,用api请求调用,可惜token一致未通过(有了解的大佬,望指导),转而直接通过问答api触发工作流获取结果,这样需要面对两个问题: 1. bot需要能正确识别和接收 api 给出的JSON结构数据, 2. 返回的内容也需要JSON结构化 解决过程: 1. 配置bot提示词清晰指明工作流调用(这里可能需要多次尝试,或直接指定每次都调用一个入口工作流,通过入口工作流内编写脚本调用后续子工作流) 2. 因为工作流中接收的参数类型有限或配置比较麻烦,这里一般直接接收字符串后的JSON数据,需要用到时通过脚本转换后再输出。 3. 配置工作流使用直接输入输出

存档文件

这里使用的 vue3做前端, express + puppeteer 做api服务, 这里需要将获到coze数据先缓存,以便puppetter 打开新页生成存档时,页面能有数据展示。 解决方式:

  1. 接口端代理缓存,模板页通过接口获取缓存数据并展示

  2. 前端通过localStrong本地缓存,puppeteer 通过链接本地浏览器,使得新开页面能正确获得本地缓存并展示

总结

一次简单的coze体验,一些个人感受

  1. AI生成一些非标准内容的结果有不确定性,对prompt有要求,即使有prompt辅助优化,想实现一个过得去的结果依然要花不少时间调试

  2. 极大的降低了应用开发的成本,但是对于一般小白用户依然有使用门槛

  3. 希望能提供纯code的开放方式,纯UI的配置使用还是有些繁琐且效率不高