This issue was moved to a discussion.
You can continue the conversation there. Go to discussion →
消息中工具、agent和用户输入的组装方式 #13
Labels
Milestone
You can continue the conversation there. Go to discussion →
用户发出或收到的消息,会携带网页文本、网页标题等信息,这些信息最终会被渲染或传给模型。
为了方便优化 prompt,需要保留最原始的信息,因此需要定义不同类型内容的渲染方式、存储方式、转义为 Prompt 的方式。
基本原则
初始化消息 (02.27 更新)
对话的开始,是自动设置的机器人角色,使用以下 prompt 要求机器人按照一定的格式理解用户输入:
初步设想这个初始消息可以使用
模版语言
描述,允许用户自己定义、插入变量、或者使用条件-循环等语法。用户消息(03.17 更新)
用户发出的信息放在
{"role": "user", "content": "你好"}
中。其中,
content
的内容,分为 工具 + Agent + User Input 三个部分。请用 ${DISPLAY_LANG} 解释: ${INPUT}
。其中DISPLAY_LANG
可以是中文、英文,从用户设置中获取。INPUT
是用户主动输入的文字,例如Hello World
这三个部分会被拼接到实际发给模型的 prompt 中。最终发出去的消息格式,由“工具”控制,不同的工具,最终组装完成的消息是不一样的。
例子: https://github.com/askman-dev/askman-chrome-extension/raw/dev/src/assets/conf/default-tools.toml
V2
怎么解决页面的 agent 和 工具的关系呢?
以下为草稿
#### 在 Stack Overflow 提问的流程 1. 使用快捷键唤起对话窗口 4. 窗口内自动填充信息 - 自动引用标题`title`、问题`question` - 例如 https://stackoverflow.com/questions/40471/what-are-the-differences-between-a-hashmap-and-a-hashtable-in-java 5. 用户输入问题 `{userInput}` - 例如 `给我两个例子` 6. 扩展需要组合出发送给接口的信息 ```json { "context": [ { "id":"stackoverflow", "title":"What are the differences between a HashMap and a Hashtable in Java?", "url":"https://stackoverflow.com/questions/40471/what-are-the-differences-between-a-hashmap-and-a-hashtable-in-java", "question":"What are the differences between...", "answers":[] }], "messages": [] } ``` 其中,`messages` 是 `{role: user|assistant, content:string}` 的结构 content 内容为 context 和 用户输入的组合。 ```md 我正在浏览StackOverflow: {title}。 {userInput} ```在 GitHub Pages 提问的流程
在 GitHub Pages 使用 AI 查找的流程
.delta
在接收返回时使用,结构和 openai 的api 一致 ,例如The text was updated successfully, but these errors were encountered: