From 13e3c58edf43c8c2cb94a9c6ab49ebef5909abf9 Mon Sep 17 00:00:00 2001 From: liubiren Date: Wed, 8 Jul 2026 20:20:18 +0800 Subject: [PATCH] 1 --- 智能体/application/application.py | 12 +- 智能体/application/assets/knowledge_base.svg | 22 + 智能体/application/components/conversation.py | 393 ++++++++++-------- 智能体/application/components/frame.py | 100 ++--- 智能体/application/pages/conversation.py | 118 ++++-- 智能体/application/pages/index.py | 4 +- 智能体/application/state/conversation.py | 6 +- .../state/conversation_history_collapse.py | 2 +- 智能体/assets/conversation.svg | 22 + 智能体/assets/knowledge_base.svg | 22 + 智能体/assets/logo.png | Bin 0 -> 88217 bytes 11 files changed, 417 insertions(+), 284 deletions(-) create mode 100644 智能体/application/assets/knowledge_base.svg create mode 100644 智能体/assets/conversation.svg create mode 100644 智能体/assets/knowledge_base.svg create mode 100644 智能体/assets/logo.png diff --git a/智能体/application/application.py b/智能体/application/application.py index 2e7967e..7191d2c 100644 --- a/智能体/application/application.py +++ b/智能体/application/application.py @@ -12,13 +12,23 @@ app = rx.App( "margin": "0", "padding": "0", "box_sizing": "border-box", + "background-color": "transparent", + "font-family": "HuaweiFont,Helvetica,Arial,PingFangSC-Regular,Hiragino Sans GB,Microsoft YaHei,微软雅黑,Microsoft JhengHei", + "gap": "0", }, # 覆盖伪元素 ::before 和 ::after "*::before, *::after": { "box_sizing": "border-box", }, + "--devui-base-bg": "#ffffff", "--mc-global-bg": "linear-gradient(to bottom, #D0C9FF 0%, #E6D6F0 8%, #F1DBEA 12%, #C8DCFB 40%, #ABC6F6 60%, #87AEFE 90%)", - "--devui-base-bg-dark": "#252b3a", + "--devui-border-radius-feedback": "4px", + "--devui-border-radius-card": "8px", + "--devui-font-size-sm": "11px", + "--devui-font-size": "12px", + "--devui-font-size-lg": "14px", + "--devui-text": "#252b3a", + "--devui-text-weak": "#575d6c", } # 自定义主题颜色 ) # 此处变量名需使用 app ,具体原因目前尚不清楚 # 注册首页路由 diff --git a/智能体/application/assets/knowledge_base.svg b/智能体/application/assets/knowledge_base.svg new file mode 100644 index 0000000..1277a20 --- /dev/null +++ b/智能体/application/assets/knowledge_base.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/智能体/application/components/conversation.py b/智能体/application/components/conversation.py index 00f9fc9..5f7396b 100644 --- a/智能体/application/components/conversation.py +++ b/智能体/application/components/conversation.py @@ -4,107 +4,149 @@ """ import reflex as rx - +from typing import Tuple from application.models import Run, Reasoning, Conversation from application.state.conversation import ConversationState from application.state.create_conversation_modal import CreateConversationModalState -def render_delete_conversation_component( - conversation_id: str, -): +def render_conversation_history_item( + conversation_id: str, conversation: Conversation +) -> rx.Component: """ - 渲染删除对话组件 + 渲染对话历史的对话卡片 :param conversation_id: 对话唯一标识 - :return: 删除对话组件 + :param conversation: 对话实例 + :return: Component """ - return rx.popover.root( - rx.popover.trigger( - rx.button( - rx.icon("ellipsis", size=16), - variant="ghost", - padding="4px", - height="auto", - ) - ), - rx.popover.content( - rx.popover.close( + + def render_more_button( + conversation_id: str, + ) -> rx.Component: + """ + 渲染更多按钮 + :param conversation_id: 对话唯一标识 + :return: Component + """ + return rx.popover.root( + # 触发事件:点击更多按钮 + rx.popover.trigger( rx.button( - "删除", - color_scheme="red", - variant="ghost", - width="100%", - justify_content="center", - on_click=lambda: ConversationState.delete_conversation( - conversation_id - ), + rx.icon("ellipsis", size=14, color="var(--devui-text-weak)"), + cursor="pointer", # 鼠标光标显示为手指 ) ), - padding="4px", - ), - open_delay=0, - ) - - -def render_conversation_item_component( - conversation_id: str, conversation: Conversation -): - """ - 渲染对话项组件 - """ - # 对话描述 - description = conversation.description - - # 若当前对话唯一标识非指定对话唯一标识则正常渲染,否则高亮渲染 - return rx.cond( - ConversationState.conversation_id != conversation_id, - # 正常渲染 - rx.button( - rx.hstack( - rx.text( - description, - flex=1, - overflow="hidden", - text_overflow="ellipsis", - white_space="nowrap", - text_align="left", + # 渲染气泡卡片 + rx.popover.content( + rx.box( + width="14px", + height="14px", + position="absolute", + top="-7px", + left="50%", + transform="translateX(-50%) rotate(45deg)", + background_color="var(--devui-base-bg, #ffffff)", + box_shadow="-2px -2px 4px rgba(0,0,0,0.05)", ), - render_delete_conversation_component(conversation_id), - align_items="center", - width="100%", - spacing="2", - ), - width="100%", - justify_content="flex-start", - padding_x="12px", - padding_y="10px", - variant="surface", - color_scheme="blue", - on_click=lambda: ConversationState.switch_conversation(conversation_id), - ), - # 高亮渲染 - rx.button( - rx.hstack( - rx.text( - description, - flex=1, - overflow="hidden", - text_overflow="ellipsis", - white_space="nowrap", - text_align="left", + rx.popover.close( + rx.box( + "删除", + width="100%", # 宽度 + height="24px", # 高度 + padding="4px", # 内边距 + line_height="16px", # 行高 + font_size="12px", # 字体大小 + color="#252b3a", + display="flex", # 弹性布局 + flex_wrap="wrap", # 换行 + align_items="center", # 子元素垂直居中 + background_color="var(--devui-base-bg)", # 背景颜色 + white_space="nowrap", # 不换行 + border_radius="var(--devui-border-radius-feedback)", # 圆角 + # 点击事件:删除对话 + on_click=lambda: ConversationState.delete_conversation( + conversation_id + ), + ), ), - render_delete_conversation_component(conversation_id), - align_items="center", - width="100%", - spacing="2", + padding="8px", # 内边距 + arrow_size=10, # 三角大小 + side="bottom", # 气泡在按钮下方,三角朝上 + side_offset=8, # 气泡和按钮之间间距 + align="center", # 水平居中对齐触发按钮中线 + style={ + "position": "relative", # 关键:给三角提供定位基准 + "background_color": "var(--devui-base-bg, #ffffff) !important", + "border_radius": "var(--devui-border-radius-feedback, 8px) !important", + "box_shadow": "0 2px 12px rgba(0,0,0,0.1)", + }, ), - width="100%", - justify_content="flex-start", - padding_x="12px", - padding_y="10px", - variant="soft", - color_scheme="blue", + ) + + # 指定对话的激活状态 + is_actived = conversation_id == ConversationState.conversation_id + + return rx.box( + rx.hstack( + # 渲染对话描述 + rx.text( + conversation.description, + flex=1, + height="22px", + line_height="22px", + font_size="var(--devui-font-size)", + padding_right="4px", + overflow="hidden", + text_overflow="ellipsis", + white_space="nowrap", + ), + # 渲染更多按钮 + rx.box( + render_more_button(conversation_id=conversation_id), + min_width="14px", + cursor="pointer", # 鼠标光标显示为手指 + style={ + "opacity": rx.cond( + is_actived, "1", "0" + ), # 若已激活则不透明,否则透明 + "pointer_events": rx.cond( + is_actived, "auto", "none" + ), # 若已激活则可点击,否则不可点击 + "transition": "opacity 0.18s ease", + }, + ), + display="flex", # 弹性布局 + align_items="center", # 子元素垂直居中 + width="100%", # 宽度 + margin_bottom="8px", # 底部外边距 ), + line_height="1.5", # 行高 + color="var(--devui-text-weak)", # 字体颜色 + cursor="pointer", # 鼠标悬停显示手指 + margin_bottom="8px", # 底部外边距 + width="100%", # 宽度 + padding="16px", # 内边距 + border_radius="8px", # 圆角 + style={ + "background": rx.cond( + is_actived, + "linear-gradient(to right, #f3efff, #f3efff33, #e2f1fd33, #e2f1fd)", + "var(--devui-base-bg)", + ), + "box_shadow": rx.cond(is_actived, "2px 2px 8px #e9e9e9", "none"), + # 鼠标悬停时渲染背景颜色和阴影 + "&:hover": { + "background": "linear-gradient(to right, #f3efff, #f3efff33, #e2f1fd33, #e2f1fd)", + "box_shadow": "2px 2px 8px #e9e9e9", + }, + # 鼠标悬停时强制显示右侧三点按钮,覆盖默认隐藏 + "&:hover > div > div:last-child": { + "opacity": "1 !important", + "pointer_events": "auto !important", + }, + }, + # 点击事件:将指定对话唯一标识设置为当前对话唯一标识 + on_click=lambda: ConversationState.switch_conversation(conversation_id), ) @@ -277,108 +319,101 @@ def render_conversation_component() -> rx.Component: ) -def render_input_component() -> rx.Component: +def render_create_conversation_component() -> rx.Component: """ - 渲染输入和其它组件 + 渲染创建对话组件 """ - return rx.center( - rx.vstack( - # 渲染创建对话组件 - rx.hstack( - rx.spacer(), # 占位符 - rx.dialog.root( - # 触发事件:点击创建对话图标,支持鼠标悬停提示 - rx.dialog.trigger( - rx.box(rx.tooltip(rx.icon("circle-plus"), content="创建对话")) - ), - # 内容层 - rx.dialog.content( - rx.form( - rx.hstack( - rx.input( - name="description", - placeholder="请输入对话描述", - flex="auto", - min_width="20ch", - ), - rx.button("创建"), - spacing="2", - wrap="wrap", - width="100%", - ), - on_submit=ConversationState.create_conversation, - ), - background_color=rx.color("mauve", 1), - ), - open=CreateConversationModalState.is_open, - on_open_change=CreateConversationModalState.toggle, - ), - width="100%", + return rx.hstack( + rx.spacer(), # 占位符 + rx.dialog.root( + # 触发事件:点击创建对话图标,支持鼠标悬停提示 + rx.dialog.trigger( + rx.box(rx.tooltip(rx.icon("circle-plus"), content="创建对话")) ), - # 渲染自定义输入组件 - rx.form( - rx.box( - rx.vstack( - # 输入区域 + # 内容层 + rx.dialog.content( + rx.form( + rx.hstack( rx.input( - name="user_prompt", - placeholder="发消息...", + name="description", + placeholder="请输入对话描述", flex="auto", - border="none", # 外框边线 - outline="none", # 高亮轮廓线 - padding_bottom="8px", + min_width="20ch", ), - # 操作区域,暂仅包含发送按钮 - rx.hstack( - rx.spacer(), # 占位符 - # 发送按钮 - rx.button( - rx.icon("arrow-up", size=18), - color_scheme="blue", - radius="full", - width="36px", - height="36px", - padding="0", - type="submit", - loading=ConversationState.get_running_status, - disabled=ConversationState.get_running_status, - ), - width="100%", - ), - spacing="8", - padding_x="12px", - padding_y="12px", + rx.button("创建"), + spacing="2", + wrap="wrap", + width="100%", ), - border=f"1px solid {rx.color('mauve', 4)}", - radius="large", - background_color="white", + on_submit=ConversationState.create_conversation, ), - max_width="50em", # 最大宽度 - margin="0 auto", # 水平居中 - align_items="center", # 子元素垂直居中 - spacing="0", # 子元素间距 - on_submit=ConversationState.run, - reset_on_submit=True, + background_color=rx.color("mauve", 1), ), - # 渲染底部文案 - rx.text( - "内容由大模型生成,无法确保准确性和完整性,仅供参考", - text_align="center", - font_size=".75em", - color=rx.color("mauve", 10), - ), - width="100%", - padding_x="16px", - align="stretch", + open=CreateConversationModalState.is_open, + on_open_change=CreateConversationModalState.toggle, ), - position="sticky", - bottom="0", - left="0", - padding_y="16px", - backdrop_filter="auto", - backdrop_blur="lg", - border_top=f"1px solid {rx.color('mauve', 3)}", - background_color=rx.color("mauve", 2), - align="stretch", width="100%", ) + + +def render_input_component() -> rx.Component: + """ + 渲染输入组件 + """ + return rx.vstack( + # 渲染自定义输入组件 + rx.form( + rx.box( + rx.vstack( + # 输入区域 + rx.input( + name="user_prompt", + placeholder="发消息...", + flex="auto", + border="none", # 外框边线 + outline="none", # 高亮轮廓线 + padding_bottom="8px", + ), + # 操作区域,暂仅包含发送按钮 + rx.hstack( + rx.spacer(), # 占位符 + # 发送按钮 + rx.button( + rx.icon("arrow-up", size=18), + color_scheme="blue", + radius="full", + width="36px", + height="36px", + padding="0", + type="submit", + loading=ConversationState.get_running_status, + disabled=ConversationState.get_running_status, + ), + width="100%", + ), + spacing="8", + padding_x="12px", + padding_y="12px", + ), + border=f"1px solid {rx.color('mauve', 4)}", + radius="large", + background_color="white", + ), + max_width="50em", # 最大宽度 + margin="0 auto", # 水平居中 + align_items="center", # 子元素垂直居中 + spacing="0", # 子元素间距 + on_submit=ConversationState.run, + reset_on_submit=True, + ), + # 渲染底部文案 + rx.text( + "内容由大模型生成,无法确保准确性和完整性,仅供参考", + text_align="center", + font_size=".75em", + color=rx.color("mauve", 10), + ), + width="100%", + padding_x="16px", + align="stretch", + ) diff --git a/智能体/application/components/frame.py b/智能体/application/components/frame.py index a897c82..8f0b4ae 100644 --- a/智能体/application/components/frame.py +++ b/智能体/application/components/frame.py @@ -9,8 +9,8 @@ from application.state.frame import FrameState # 初始化侧边栏图标导航按钮字典 sidebar_icon_nav_buttons = { - "conversation": {"src": "/assets/conversation.svg", "text": "对话"}, - "knowledge_base": {"src": "/assets/knowledge_base.svg", "text": "知识库"}, + "conversation": {"src": "/conversation.svg", "text": "对话"}, + "knowledge_base": {"src": "/knowledge_base.svg", "text": "知识库"}, } @@ -21,7 +21,7 @@ def render_brand_logo(width: str = "34px", height: str = "34px") -> rx.Component :param height: 高度,默认为 34px """ return rx.image( - src="/assets/logo.png", + src="/logo.png", width=width, height=height, object_fit="contain", # 等比缩放 @@ -35,55 +35,45 @@ def render_sidebar_icon_nav_button( 渲染侧边栏图标导航按钮 :param sidebar_icon_nav_button: 侧边栏图标导航按钮 """ - # 侧边栏图标导航按钮图标 - src = sidebar_icon_nav_buttons[sidebar_icon_nav_button]["src"] - # 侧边栏图标导航按钮标签 - text = sidebar_icon_nav_buttons[sidebar_icon_nav_button]["text"] + # 指定侧边栏图标导航按钮的激活状态 + is_actived = sidebar_icon_nav_button == FrameState.sidebar_icon_nav_button - # 若选中侧边栏图标导航按钮图标非指定图标导航按钮图标则正常渲染,否则高亮渲染 - return rx.cond( - FrameState.sidebar_icon_nav_button != sidebar_icon_nav_button, - # 正常渲染 - rx.button( - rx.vstack( - rx.icon(icon, size=18), - rx.text(text, font_size="10px"), - spacing="2", - align_items="center", + return rx.box( + # 渲染图标盒子 + rx.box( + rx.image( + src=sidebar_icon_nav_buttons[sidebar_icon_nav_button]["src"], + width="24px", + height="24px", + object_fit="contain", # 等比缩放 ), - width="100%", - justify_content="center", - variant="surface", - color_scheme="blue", - on_click=lambda: FrameState.switch_active_sidebar_tab( - sidebar_icon_nav_button - ), - padding_y="10px", - ), - # 高亮渲染 - rx.button( - rx.vstack( - rx.box( - # 渲染图标 - rx.image( - src=src, - width="24px", - height="24px", - object_fit="contain", # 等比缩放 - ), - background_color="#e4f7ff", - border_radius="4px", + display="flex", # 弹性布局 + justify_content="center", # 水平居中对齐 + align_items="center", # 垂直居中对齐 + width="36px", # 宽度 + height="36px", # 高度 + border_radius="var(--devui-border-radius-card)", # 圆角 + # 若已激活则渲染图标盒子背景颜色和阴影,否则不渲染 + style={ + "background-color": rx.cond( + is_actived, "var(--devui-base-bg)", "transparent" ), - rx.text(text, size="8"), - spacing="2", - align_items="center", - ), - width="100%", - justify_content="center", - variant="soft", - color_scheme="blue", - padding_y="10px", + "box-shadow": rx.cond(is_actived, "0 4px 12px #0000001a", "none"), + }, ), + # 渲染标签 + rx.text( + sidebar_icon_nav_buttons[sidebar_icon_nav_button]["text"], + color="var(--devui-text)", + font_size="var(--devui-font-size-sm)", + line_height="20px", + ), + display="flex", # 弹性布局 + flex_direction="column", # 垂直方向布局 + align_items="center", # 垂直居中对齐 + gap="4px", + font_size="var(--devui-font-size-sm)", # 字体大小 + cursor="pointer", # 鼠标指针 ) @@ -100,7 +90,7 @@ def render_sidebar() -> rx.Component: render_brand_logo(), # 渲染品牌名称 rx.text( - "MateAgent", + "MateAI", line_height="20px", # 行高 font_size="11px", font_weight="700", @@ -108,8 +98,8 @@ def render_sidebar() -> rx.Component: ), display="flex", # 弹性布局 flex_direction="column", # 垂直方向布局 - justify_content="center", # 水平居中对齐 - align_items="center", # 水平居中对齐 + justify_content="center", # 子元素垂直居中分布 + align_items="center", # 子元素水平居中 gap="4px", ), # 渲染分隔线 @@ -123,14 +113,14 @@ def render_sidebar() -> rx.Component: margin_top="12px", # 上外边距 display="flex", # 弹性布局 flex_direction="column", # 垂直方向布局 - align_items="center", # 水平居中对齐 + align_items="center", # 子元素水平居中 width="100%", # 宽度为父容器宽度 ), display="flex", # 弹性布局 flex_direction="column", # 垂直方向布局 - justify_content="space-between", # 间距分布 - align_items="center", # 水平居中对齐 + justify_content="space-between", # 子元素垂直两端分布 + align_items="center", # 子元素水平居中 width="60px", # 宽度 - height="100%", # 高度为父容器高度 + height="100%", # 高度 box_sizing="border-box", # 盒模型 ) diff --git a/智能体/application/pages/conversation.py b/智能体/application/pages/conversation.py index 15612ab..d5416d1 100644 --- a/智能体/application/pages/conversation.py +++ b/智能体/application/pages/conversation.py @@ -6,8 +6,9 @@ import reflex as rx from application.components.conversation import ( render_conversation_component, - render_conversation_item_component, + render_conversation_history_item, render_input_component, + render_create_conversation_component, ) from application.state.conversation import ConversationState from application.state.conversation_history_collapse import ( @@ -17,49 +18,61 @@ from application.state.conversation_history_collapse import ( def render_conversation_page() -> rx.Component: """ - 渲染对话页面:左侧为对话历史折叠面板,右侧为对话和输入等组件 + 渲染对话页面:左侧为对话历史折叠面板,右侧为对话历史、运行历史、创建和输入等组件 """ # 对话历史折叠面板打开状态 is_open = ConversationHistoryCollapseState.is_open return rx.hstack( - # 渲染对话历史组件(聊天容器左侧部分),若对话历史列表 + # 渲染左侧 rx.hstack( - # 若对话历史折叠面板关闭则不渲染,否则渲染 + # 若对话历史折叠面板打开则渲染,否则不渲染 rx.cond( is_open, - rx.fragment(), - # 渲染对话历史组件 - rx.box( - rx.vstack( - # 标题 + # 渲染标题、搜索栏和对话历史列表 + rx.vstack( + # 标题 + rx.hstack( rx.text( - "对话历史", font_size="16px", weight="bold", width="100%" + "对话历史", + font_size="var(--devui-font-size-lg)", # 字体大小 + font_weight="700", # 字体粗细 + margin_bottom="8px", # 底部外边距 + white_space="nowrap", # 不换行 ), - # 分割线 - rx.divider(), - # 遍历渲染对话字典 - rx.foreach( - ConversationState.get_conversations, - lambda i, _: render_conversation_item_component(i[0], i[1]), - ), - rx.vstack( - rx.icon("box", size=64, color=rx.color("mauve", 8)), - rx.text("无数据", size="3", color=rx.color("mauve", 10)), - align_items="center", - justify_content="center", - flex="1", - margin_top="60px", - ), - align_items="stretch", - width="100%", - spacing="2", - padding="2em", + display="flex", # 弹性布局 + align_items="center", # 子元素垂直居中 + justify_content="space-between", # 子元素两端对齐 ), - width="20em", - height="100vh", - background_color=rx.color("mauve", 1), + # 渲染搜索栏(暂未实现) + # 渲染对话历史列表 + rx.vstack( + rx.foreach( + ConversationState.get_conversation_history, + lambda item, _: render_conversation_history_item( + item[0], item[1] + ), + ), + flex="1", # 占满父元素高度 + margin_top="8px", # 顶部外边距 + width="100%", # 宽度 + overflow="auto", # 允许溢出时显示垂直滚动条 + align_items="stretch", # 子元素水平拉伸 + ), + backdrop_filter="blur(50px)", # 背景模糊 + background_color="#f9f9f9cc", # 背景颜色 + display="flex", # 弹性布局 + flex_direction="column", # 垂直方向布局 + gap="12px", # 子元素间距 + min_width="240px", # 最小宽度 + max_width="380px", # 最大宽度 + width="25%", # 宽度 + height="100%", # 高度 + padding="12px", # 内边距 + color="var(--devui-text)", + transition="all 0.3s ease-in-out", # 过渡动画 ), + rx.fragment(), ), rx.button( rx.cond( @@ -79,16 +92,35 @@ def render_conversation_page() -> rx.Component: height="100vh", spacing="0", ), - # 渲染对话、输入和其它组件(聊天容器右侧部分) - rx.vstack( - render_conversation_component(), - render_input_component(), - flex=1, - height="100vh", - spacing="0", + # 渲染右侧布局占位层 + rx.box( + # 渲染内容排版层 + rx.vstack( + # 渲染对话 + render_conversation_component(), + # 渲染创建对话 + render_create_conversation_component(), + # 渲染输入 + render_input_component(), + width="100%", # 宽度 + height="100%", # 高度 + display="flex", # 弹性布局 + flex_flow="column", # 垂直方向布局 + align_items="center", # 子元素水平居中 + gap="8px", # 子元素间距 + ), + background_color="linear-gradient(180deg, #fffffff2, #f8fafff2 99%)", # 背景颜色 + position="relative", # 相对定位 + display="flex", # 弹性布局 + flex="1", # 分配父容器宽度 + width="0", # 宽度 + height="100%", # 高度 ), - width="100vw", - height="100vh", - spacing="0", - align_items="stretch", + position="relative", # 相对定位 + flex="1", # 分配父容器宽度 + display="flex", # 弹性布局 + overflow="hidden", # 隐藏溢出内容 + height="100%", # 高度 + min_height="0", # 最小高度 + border_radius="12px", # 圆角 ) diff --git a/智能体/application/pages/index.py b/智能体/application/pages/index.py index 4e37e16..a6d1ec8 100644 --- a/智能体/application/pages/index.py +++ b/智能体/application/pages/index.py @@ -26,8 +26,8 @@ def render_index_page() -> rx.Component: # 渲染知识库页面 ("knowledge_base", render_knowledge_base_page()), ), - width="100%", - height="100vh", # 垂直高度为可视窗口高度 + width="100%", # 宽度 + height="100vh", # 高度 padding="8px 8px 8px 0", # 内边距 overflow="auto", # 垂直方向拉伸至父元素高度 box_sizing="border-box", # 盒模型 diff --git a/智能体/application/state/conversation.py b/智能体/application/state/conversation.py index 03175ed..88e0277 100644 --- a/智能体/application/state/conversation.py +++ b/智能体/application/state/conversation.py @@ -71,10 +71,10 @@ class ConversationState(rx.State): conversation_id: str = next(reversed(conversations.keys())) @rx.var - def get_conversations(self) -> Dict[str, Conversation]: + def get_conversation_history(self) -> Dict[str, Conversation]: """ - 获取对话字典,用于前端按照创建倒序渲染对话历史 - :return: 对话字典(倒序) + 获取对话历史,用于前端渲染对话历史 + :return: 对话历史 """ return dict(reversed(self.conversations.items())) diff --git a/智能体/application/state/conversation_history_collapse.py b/智能体/application/state/conversation_history_collapse.py index f929270..266cfa6 100644 --- a/智能体/application/state/conversation_history_collapse.py +++ b/智能体/application/state/conversation_history_collapse.py @@ -11,7 +11,7 @@ class ConversationHistoryCollapseState(rx.State): """ # 对话历史折叠面板打开状态,True表示打开,False表示关闭 - is_open: bool = True + is_open: bool = False @rx.event def toggle(self) -> None: diff --git a/智能体/assets/conversation.svg b/智能体/assets/conversation.svg new file mode 100644 index 0000000..1277a20 --- /dev/null +++ b/智能体/assets/conversation.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/智能体/assets/knowledge_base.svg b/智能体/assets/knowledge_base.svg new file mode 100644 index 0000000..1277a20 --- /dev/null +++ b/智能体/assets/knowledge_base.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/智能体/assets/logo.png b/智能体/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..c9b75a7e7a5e612b4687fba639495222a2473322 GIT binary patch literal 88217 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 _4@$GZN^HesRZmiMx^L}%|GiFCdPO~|Iv`|0!^ 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 literal 0 HcmV?d00001