菜单

聊天和消息界面

相关源文件

Langflow 中的聊天和消息界面包含前端 UI 组件、模态框和类型定义,使用户能够通过对话界面与 AI 流进行交互。该系统处理消息显示、输入收集、内容渲染以及用于聊天工作流的模态框交互。

该界面支持包括文本、媒体、JSON、代码块和错误消息在内的丰富内容类型,在流编辑器环境中提供全面的聊天体验。

接口架构

聊天和消息界面由 TypeScript 类型定义、模态框组件和 UI 元素组成,用于处理聊天上下文中的用户交互。

聊天界面架构

来源

聊天消息类型

前端定义了用于表示聊天消息及其相关数据结构的全面的 TypeScript 接口。

核心消息接口

前端消息类型层次结构

来源

内容类型

该界面支持具有不同内容类型的结构化内容块,用于丰富的消息显示。

内容类型系统

来源

内容类型支持丰富的消息渲染。

内容类型目的关键属性
TextContent纯文本或 markdown 文本text: string
MediaContent图像,视频urls: string[], caption?: string
JSONContent结构化数据显示data: Record<string, any>
CodeContent代码片段高亮code: string, language: string, title?: string
ErrorContent错误信息显示component?: string, reason?: string, solution?: string, traceback?: string
ToolContent工具执行详情name?: string, tool_input: Record<string, any>, output?: any

事件类型

`PlaygroundEvent` 接口处理实时聊天事件。

事件类型描述
message标准聊天消息
error错误通知
warning警告消息
info信息消息
token流式 token 更新

聊天界面包含用于文本输入和提示编辑的专用模态框组件。

提示模态框

`PromptModal` 组件提供了一个交互式界面,用于编辑具有变量高亮和验证功能的 AI 提示。

PromptModal 组件结构

来源

`PromptModal` 的主要功能

功能实现
变量检测`checkVariables()` 解析 `{variable_name}` 模式
语法高亮`coloredContent` 结合 `regexHighlight` 和 `varHighlightHTML`
验证`usePostValidatePrompt` hook 验证提示结构
编辑/预览切换`isEdit` 状态在 `Textarea` 和预览之间切换
变量显示`Badge` 组件显示提取的变量

文本区域模态框

`ComponentTextModal` 提供了一个简单的文本编辑界面,用于组件输入。

TextAreaModal 组件结构

来源

基础模态框系统

两个模态框都继承了 `BaseModal`,它提供了统一的模态框行为。

Modal Component (模态框组件)目的主要属性
PromptModalAI 提示编辑,支持变量检测field_name, value, setValue, nodeClass, setNodeClass
ComponentTextModal简单的文本输入编辑value, setValue, password, readonly, changeVisibility
BaseModal通用模态框功能open, setOpen, size, children

UI 组件

该界面利用了几个 UI 组件来创建统一的聊天体验。

手风琴组件

`Accordion` 组件提供可折叠的区域,用于组织聊天相关内容。

Accordion 组件架构

来源

手风琴支持

  • 可折叠区域:使用 Radix UI 原语
  • 动画过渡:用于打开/关闭状态的 CSS 动画
  • 工具提示集成:`ShadTooltip` 用于交互式提示
  • 禁用状态:无内容时的视觉反馈

表单组件

聊天模态框使用标准的表单组件。

组件在聊天界面中的使用
文本区域消息和提示的文本输入
按钮操作触发器(保存、提交等)
徽章提示编辑器中的变量显示
IconComponent视觉指示器和控件

状态管理

模态框组件管理用户交互的本地状态。

来源

交互功能

聊天界面提供了多种交互功能来增强用户体验。

提示变量检测

`PromptModal` 包含复杂的变量检测和高亮显示功能。

变量检测过程

来源

变量检测系统

  1. 提取变量,使用正则表达式模式 `/{([^{}]+)}/g`
  2. 验证字符, against `INVALID_CHARACTERS` 常量
  3. 高亮语法,使用 `regexHighlight` 和 `varHighlightHTML`
  4. 显示徽章,包含变量名和工具提示

编辑/预览切换

提示编辑器支持在编辑和预览模式之间无缝切换。

来源

键盘交互

两个模态框都支持通过 `handleKeyDown` 工具函数进行键盘快捷操作。

来源

集成示例

使用聊天消息类型

前端接口的结构旨在处理不同的消息场景。

实现模态框触发器

模态框组件通常由父组件触发。

处理 Playground 事件

`PlaygroundEvent` 接口支持实时聊天交互。

结论

Langflow 中的聊天和消息系统提供了一个全面的框架来处理用户和 AI 模型之间的消息。它提供:

  • 支持丰富内容类型的灵活消息模式
  • 数据库存储和检索,带有会话管理
  • 与 LangChain 的无缝集成
  • 错误处理和报告功能
  • 文件和媒体支持

该系统构成了 Langflow 平台中交互式通信的基础,实现了具有结构化消息功能的复杂 AI 应用程序。