-
-
Notifications
You must be signed in to change notification settings - Fork 27
/
prompts.go
57 lines (44 loc) · 3.69 KB
/
prompts.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
package openai
import (
"text/template"
"github.com/samber/lo"
)
type AnySummarizationInputs struct {
Content string
}
var AnySummarizationPrompt = lo.Must(template.New("anything summarization prompt").Parse("" +
`内容:{{ .Content }}
你是我的总结助手。我将为你提供一段话,我需要你在不丢失原文主旨和情感、不做更多的解释和说明的情况下帮我用不超过100字总结一下这段话说了什么。`))
type ChatHistorySummarizationPromptInputs struct {
ChatHistory string
Language string
}
func NewChatHistorySummarizationPromptInputs(chatHistory string, language string) *ChatHistorySummarizationPromptInputs {
return &ChatHistorySummarizationPromptInputs{
ChatHistory: chatHistory,
Language: lo.Ternary(language != "", language, "Simplified Chinese"),
}
}
type ChatHistorySummarizationOutputsDiscussion struct {
Point string `json:"point"`
KeyIDs []int64 `json:"keyIds"`
}
type ChatHistorySummarizationOutputs struct {
TopicName string `json:"topicName"`
SinceID int64 `json:"sinceId"`
Participants []string `json:"participants"`
Discussion []*ChatHistorySummarizationOutputsDiscussion `json:"discussion"`
Conclusion string `json:"conclusion"`
}
var ChatHistorySummarizationPrompt = lo.Must(template.New("chat histories summarization prompt").Parse("" +
`Chat histories:"""
{{ .ChatHistory }}
"""
You are a expert in summarizing the refined outlines from documents and dialogues. Please read through the provided chat history and identify the 1-10 distinct discussion topics that discussed and talked about.
Output topics correspond the following JSON Schema types, and output the result in language {{ .Language }}:"""
{"$schema":"http://json-schema.org/draft-07/schema#","title":"Chat Histories Summarization Schema","type":"array","items":{"type":"object","properties":{"topicName":{"type":"string","description":"The title, brief short title of the topic that talked, discussed in the chat history."},"sinceId":{"type":"number","description":"The id of the message from which the topic initially starts."},"participants":{"type":"array","description":"The list of the names of the participated users in the topic.","items":{"type":"string"}},"discussion":{"type":"array","description":"The list of the points that discussed during the topic.","items":{"type":"object","properties":{"point":{"type":"string","description":"The key point that talked, expressed, mentioned, or discussed during the topic."},"keyIds":{"type":"array","description":"The list of the ids of the messages that contain the key point.","items":{"type":"number"}}},"required":["point","keyIds"]},"minItems": 1,"maxItems": 5},"conclusion":{"type":"string","description":"The conclusion of the topic, optional."}},"required":["topicName","sinceId","participants","discussion"]}}
"""
For example:"""
[{"topicName":"Most Important Topic 1","sinceId":123456789,"participants":["John","Mary"],"discussion":[{"point":"Most relevant key point","keyIds":[123456789,987654321]}],"conclusion":"Optional brief conclusion"},{"topicName":"Most Important Topic 2","sinceId":987654321,"participants":["Bob","Alice"],"discussion":[{"point":"Most relevant key point","keyIds":[987654321]}],"conclusion":"Optional brief conclusion"}]
"""
Please note the topics may be discussed in parallel, so please consider the relevant keywords that appeared across the chat histories. Summarize the distinct topics from the chat history. For each topic, extract the most relevant 1-5 points and key message IDs. Be very concise and focused on the key essence of each topic.`))