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参数.我们让添加源对话框的添 ...
随机推荐
- 我自己写了一个波场(Tron)本地网页版钱包
最近由于项目需要,需要给每个用户分配一个充币地址,考虑到钱包安全性和方便管理,于是自己动手写了一个本地网页版的钱包,附上源代码跟大家交流下. Github 源代码地址 钱包和项目是分离的,项目通过鉴权 ...
- Wolai 使用教程:嵌入小组件库,打造精美、强大的知识库主页
Wolai /我来云笔记在 2022.7.11 日的更新中,支持嵌入包括 NotionPet.芦笋.Replit 等在内的第三方应用.感谢 Wolai 云笔记官方对于 NotionPet 的支持. 趁 ...
- Django 14天从小白到进阶- Day1 Django 初识
来自作者:金角大王 本节内容 Http原理介绍 自行开发一个Web框架 WSGI介绍 Django介绍 MVC/MTV Django安装 创建项目与APP 开发第一个页面 为什么学Django? Go ...
- MMCM/PLL VCO
输入输出时钟频率,input 322.265625Mhz, output 312.5Mhz 对于使用MMCM与PLL的不同情况,虽然输入输出频率是一样的,但是,分/倍频系数是不同的,不能使用同一套参数 ...
- 【Java】水果超市管理系统
前言 说是个系统,看着像实训的产物,但实际上这是Java课程最后一个关于jdbc的大实验,yes,挺大的. 过程 看着视频里的一堆一堆的文件,逻辑混乱的讲解,我决定 我自己写这个系统 说干就干: 分析 ...
- Python从0到1丨带你认识图像平滑的三种线性滤波
摘要:常用于消除噪声的图像平滑方法包括三种线性滤波(均值滤波.方框滤波.高斯滤波)和两种非线性滤波(中值滤波.双边滤波),本文将详细讲解三种线性滤波方法. 本文分享自华为云社区<[Python从 ...
- 记录一些不知道哪里冒出来的 idea(可能已存在)
2022/7/4 给定一张 \(n\) 个点的有权无向图和 \(m\) 个关键点,求其生成树满足每个点到离它最近的关键点的距离之和最小. 输出该生成树边权和. 加强一下: 给出一个 \(N\) 个点 ...
- 基于 prefetch 的 H5 离线包方案
前言 对于电商APP来讲,使用H5技术开发的页面占比很高.由于H5加载速度非常依赖网络环境,所以为了提高用户体验,针对H5加载速度的优化非常重要.离线包是最常用的优化技术,通过提前下载H5渲染需要的H ...
- Proteus运行故障分析(电源、程序等)
问题一.Program file is not specified 原因分析:未加载hex文件. 解决方法:双击芯片,点击Program files,找到hex文件添加进来. 问题二.No power ...
- 使用numpy计算分子内坐标
技术背景 当我们打开一个用于表示分子构象的xyz文件或者pdb文件,很容易可以理解这种基于笛卡尔坐标的空间表征方法.但是除了笛卡尔坐标表示方法之外,其实也有很多其他的方法用于粗粒化或者其他目的的表征方 ...