总结
该代码定义了一个用于处理用户操作的系统,特别是针对文本文档的不同版本进行修改和查询。以下是对其主要部分的简要介绍:
枚举(Enums)
- UserActionType:包括
ASK
、EDIT
、COMMENT
和CREATETEXTDOC
。 - UserMessageType:包括
ASKCHATGPT
、ACCEPTCOMMENT
、FULLSCREENSUBMIT
和ACCELERATOR
。 - SelectionType:包括
ENTIREDOCUMENT
、SELECTEDTEXT
和SURROUNDINGCONTEXT
。 - TextdocType:包含文档类型,例如
DOCUMENT
及其他可能的类型。
接口(Interfaces)
- SourceRange:定义了文本选择范围。
- TextdocVersion:定义了一个文档版本。
- AcceleratorMetadata 和 SelectionMetadata:分别定义了加速器元数据和选择元数据。
函数
主要函数 handleUserOperation
处理用户操作,包括获取文本内容、选择范围、生成提示并发送请求到API。
辅助函数
generatePrompt
:- 根据不同的
action
(例如编辑或评论),调用相应的子函数如generateAskPrompt
或generateEditPrompt
。
- 根据不同的
describeSelectionInContext
,extractSurroundingContext
:处理选定文本及其上下文。additionalInstructions, generateUpdateInstructions
:生成额外的指令,尤其适用于文档修改。
发送请求
- 函数
sendPromptRequest
用于发送生成的提示(prompt)到API进行进一步处理。
示例调用流程
handleUserOperation()
接收用户操作参数和当前文本版本。- 根据提供的选择范围(
sourceRange
)提取选定的文本及其上下文。 - 通过
generatePrompt()
函数,根据指定的操作类型生成相应的提示消息。 - 调用
sendPromptRequest()
将生成的提示发送到API进行处理。
整个系统设计为了支持对文档内容的不同操作,并确保能够准确地确定用户想要修改的具体部分或范围。这可以通过合理利用文本选择、上下文提取以及生成针对性强的API请求来实现。
Source:https://baoyu.io/blog/ai/reverse-engineering-openai-canvas-prompt-generation