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 国际许可协议进行许可。
Prompt Playground 7月开发记录的更多相关文章
- Anytime项目开发记录0
Anytime,中文名:我很忙. 开发者:孤独的猫咪神. 这个项目会持续更新,直到我决定不再维护这个APP. 2014年3月10日:近日有事,暂时断更.希望可以会尽快完事. 2014年3月27日:很抱 ...
- CozyRSS开发记录22-界面退化
CozyRSS开发记录22-界面退化 1.问题1-HtmlTextBlock 找的这个HtmlTextBlock有很严重的bug,有时候显示不完全,有时候直接就崩了.然后看了下代码,完全是学生仔水平写 ...
- CozyRSS开发记录21-默认RSS源列表
CozyRSS开发记录21-默认RSS源列表 1.默认列表 在第一次使用CozyRSS的情况下,我们让它内置五个RSS源吧: 2.响应RSS源的更新 先不处理RSS源列表项的点击,响应下下拉菜单里的更 ...
- CozyRSS开发记录20-CanResizeWithGrip
CozyRSS开发记录20-CanResizeWithGrip 1.窗口样式 首先,WindowStyle有四种: 然后,对于窗口缩放的ResizeMode,也有四种,CanResize和CanRes ...
- CozyRSS开发记录19-窗口标题栏交互
CozyRSS开发记录19-窗口标题栏交互 1.谈谈对mvvm解耦的看法 在使用mvvm时,如何操作窗口,这是一个问题.这个问题的关键点是:mvvm是把view和viewmodel解耦了的,很多写法一 ...
- CozyRSS开发记录18-番外之Atom1.0的支持
CozyRSS开发记录18-番外之Atom1.0的支持 1.对CozyRSS.Syndication批判一番 由于我工作的主要开发语言是c++,所以会看到我的c#代码写得非常朴素,很多语法糖都没有用上 ...
- CozyRSS开发记录17-Html2Xaml
CozyRSS开发记录17-Html2Xaml 1.RssContentView还需要优化 上回做了RssContentView的显示,但是对于rss返回的描述(摘要),连换行的没有,更别说里面还有h ...
- CozyRSS开发记录16-RssContentView显示
CozyRSS开发记录16-RssContentView显示 1.RssContentView的布局和绑定 继续参照原型图来写xaml: 然后在RSSContentFrameViewModel里提供绑 ...
- CozyRSS开发记录15-获取和显示RSS内容
CozyRSS开发记录15-获取和显示RSS内容 1.内容列表 我们先给RSSContentFrame增加一个ViewModel,里面和RSS源列表一样,提供一个ObservableCollectio ...
- CozyRSS开发记录14-RSS源管理初步完工
CozyRSS开发记录14-RSS源管理初步完工 1.添加源的响应 DialogHost.Show有几个版本的重载,加一个DialogClosingEventHandler参数.我们让添加源对话框的添 ...
随机推荐
- Python网页开发神器fac 0.2.8、fuc 0.1.28新版本更新内容介绍
fac项目地址:https://github.com/CNFeffery/feffery-antd-components fuc项目地址:https://github.com/CNFeffery/fe ...
- 2020-10-24:go中channel的recv流程是什么?
福哥答案2020-10-24: ***[评论](https://user.qzone.qq.com/3182319461/blog/1603496305)
- 2022-02-22:机器人大冒险。 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0)。小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动。指令有两种
2022-02-22:机器人大冒险. 力扣团队买了一个可编程机器人,机器人初始位置在原点(0, 0).小伙伴事先给机器人输入一串指令command,机器人就会无限循环这条指令的步骤进行移动.指令有两种 ...
- 2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出。如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接
2021-06-20:已知一个消息流会不断地吐出整数 1~N,但不一定按照顺序依次吐出.如果上次打印的序号为i, 那么当i+1出现时,请打印 i+1 及其之后接收过的并且连续的所有数,直到1~N全部接 ...
- PHP代码审计——ThinkPHP基础
一.ThinkPHP概述 1. ThinPHP是一个轻量级的PHP框架,旨在提供快速开发Web应用程序的工具和资源.它采用了MVC(Model-View-Controller)架构,使开发人员可以更好 ...
- Django 有关 models 数据类型介绍:
在model中添加字段的格式一般为: field_name = field_type(**field_options) 一 field options(所有字段共用) 1 null 默认为F ...
- 高效处理报表,掌握原生JS打印和导出报表为PDF的顺畅技巧!
摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言篇 在日常工作中,报表打印和导出为PDF是经常要处理的任务 ...
- 磐舟磐基平台:基于KubeEdge的落地实践
摘要:实现统一管理.简化多集群的运维系统.减少运营成本:同时也成功将前面提到的500台鲲鹏服务器以及它上面的BC Linux for Euler集群纳入磐基PaaS平台的大家庭之中,运维效率大幅增加. ...
- ASP.NET Core 6框架揭秘实例演示[41]:跨域资源的共享(CORS)花式用法
同源策略是所有浏览器都必须遵循的一项安全原则,它的存在决定了浏览器在默认情况下无法对跨域请求的资源做进一步处理.为了实现跨域资源的共享,W3C制定了CORS规范.ASP.NET利用CorsMiddle ...
- 1.7 完善自定位ShellCode后门
在之前的文章中,我们实现了一个正向的匿名管道ShellCode后门,为了保证文章的简洁易懂并没有增加针对调用函数的动态定位功能,此类方法在更换系统后则由于地址变化导致我们的后门无法正常使用,接下来将实 ...