Prompt Playground 7月开发记录
Prompt Playground 2023年7月开发记录
上个月的时候,出于日常工作需求,做了一个简单的提示词调试工具 Prompt Playground。
这个工具的初衷是为了方便测试,所以没有做太多的功能,只是简单的实现了一个提示词的运行界面,可以方便的调整参数,查看结果。尤其是希望没有开发经验的人也可以方便的使用。
但是由于对客户端开发不熟悉,所以在实现的过程中遇到了很多问题,也花了很多时间去解决,所以把这个过程记录下来,希望能够对其他人有所帮助。
Prompt Playground 的更新
样式的更新
这个月更多的更新还是样式相关的。
刚开始的时候,只是为了实现基础的功能,所以整体使用的大部分还是Avalonia原始的组件样式,大部分的功能都需要通过鼠标点击按钮来操作,于是界面上就放置了很明显的按钮。
于是最初的样式是这样的:
同时为了简单的个性化,又在所有能够展示文字的地方都加上了一些emoji,这样看起来就比较有趣了,但是仍然简陋。
其他的一些地方,就更不用说了,像是配置界面就是最简单的表单样式,没有任何的美化。
经过了些许的摸索和学习之后,尝试在项目中引入了Semi.Avalonia,这是一个基于Avalonia的UI组件库,提供了很多现成的组件,可以直接使用。
像是Tab组件的样式就有了很大的改变,于是就有了第二版的界面。
虽然还是原有emoji的风格,但是整体的风格上组件可以做的更加精巧。
后面经过探索,引入了 Icons.Avalonia,将emoji替换成了图标,同时也对配置界面进行了一些调整,于是就有了现在的样子。
配置窗口也做了一些简单的调整。
配置模式的优化
0.1.0 版本中,所有的配置项都是配置模型下的一个字段,导致配置的重用和扩展都比较困难。
于是在0.2.0 版本中,将配置项的配置模型改为了一个列表,不同的模型可以指定需要的配置项,由此,可以实现不同模型的配置重用。
例如 Baidu ERNIE 模型和 Baidu ERNIE Turbo其实使用的相同的配置参数,那么在配置的时候,切换模型就不需要重复配置了。
这项优化也应用到了 Embedding的配置上。
结果展示优化
调试词的运行,不仅仅是需要看的生成结果,同时也需要看到生成消耗的Tokens数量,以及生成的时间。
于是在0.2.0 的更新中,就加入了这两个信息的展示。
对接向量数据库
Memory 是Semantic Kernel中最重要的一个功能,可以通过 TextMemorySkill,在提示词中加入相关信息,生成更加丰富的提示词。
而向量数据库则是Memory必备的配置,所以在0.3.0 版本中,加入了对向量数据库的支持。
但是由于Memory需要的配置项较多, 目前也没有进行优化,所以在配置的时候,需要手动输入所有的配置项。包括向量数据库的信息,Embedding的信息。
同时在调用的时候,还需要提供 Collection、Limit 和 Relevance 参数。
接下来的更新计划
- Core Skills(Plugins)的支持
- 优化文件管理
- 结果的统计和分析
- 更名(Prompt Studio)
参与
该项目目前在Github上开源,使用.NET 7 + AvaloniaUI 进行开发,支持跨平台,欢迎大家参与。
如果有任何问题或者建议,也欢迎提issue或者PR。
本作品采用知识共享署名-相同方式共享 4.0 国际许可协议进行许可。