Access 接入 AI 大模型:VBA 流式交互与 Markdown 渲染开源方案

作者:本站 来源:本站

2026-04-09 11:06 1476阅读

欢迎了解!


项目背景

尽管 AI 大模型已广泛应用于各类开发环境,但 Access 领域进展缓慢。主要原因在于 VBA 缺乏原生的 HTTP 流式支持、Markdown 渲染能力及中文编码处理较为繁琐。若要在 Access 窗体内集成 AI,开发者需自行攻克 HTTP 请求、JSON 组装、SSE 解析及 UTF-8 编码等诸多技术难点。


为此我开发了 accessAI 工具库,打包解决了上述问题。仅需导入两个 .bas 模块即可启用,具备流式输出、Markdown 富文本渲染及一键生成问答窗体的功能,开箱即用。现将其源码开源,链接位于文末。


一、核心功能亮点


功能项

详细描述

AI 智能问答

支持在 Access 界面直接调用 DeepSeek 进行提问

流式输出

借助 curl 配合 SSE 协议实现逐字实时显示

兼容性处理

若无 curl 环境,自动切换至同步请求加打字机模式

Markdown 解析

将模型返回的 Markdown 转换为 Access 支持的富文本 HTML

自动生成界面

通过代码调用自动创建问答窗体与 Markdown 查看器

UTF-8 适配

确保中文请求与响应无乱码现象

这些功能的组合,意味着无需推翻现有系统,便可为 Access 项目快速增添 AI 问答、文本生成及内容格式化展示的能力。



二、架构设计与文件组成


目录中包含的核心组件并不多:

文件名

用途说明

AI.accdb

演示数据库,含已导入模块与窗体

Module_Markdown.bas

核心逻辑,负责 AI 调用、渲染及窗体生成

JsonConverter.bas

JSON 解析组件,基于 VBA-JSON 封装

README.md

项目文档与快速上手指南

从结构来看,这遵循了适合 Access 开发者的务实路线:

  1. 不依赖复杂的外部框架。
  2. 充分利用 VBA 原生能力与系统组件。
  3. 将复杂逻辑封装于独立模块内。
  4. 优先保证可运行性而非过度追求架构。

这种设计理念非常实际。对于多数 Access 场景而言,关键在于能否快速导入、配置与验证,而非抽象设计的优雅程度。



三、技术原理分析:如何在 Access 中实现 AI 体验


这个开源项目的核心价值不在于界面,而在于对关键技术难题的处理。

1. 请求构建:避免手动拼接 JSON

项目中未直接使用字符串拼接 JSON,而是利用字典和集合构造请求体,再通过 JsonConverter 统一序列化。

此举带来两大优势:

  • 规避引号转义、换行符及特殊字符处理不当的问题。
  • 后续扩展模型参数时更易维护。

请求体构建的核心逻辑如下:

Private Function BuildDeepSeekRequestBody(ByVal sQuestion As String, _
                                          Optional ByVal bStream As Boolean = False) As String
    Dim oRoot As Object
    Dim oMsg As Object
    Dim colMessages As Collection

    Set oRoot = CreateObject("Scripting.Dictionary")
    Set oMsg = CreateObject("Scripting.Dictionary")
    Set colMessages = New Collection

    oMsg.Add "role", "user"
    oMsg.Add "content", sQuestion
    colMessages.Add oMsg

    oRoot.Add "model", API_MODEL
    oRoot.Add "messages", colMessages
    oRoot.Add "temperature", 0.7
    oRoot.Add "max_tokens", 8192
    If bStream Then oRoot.Add "stream", True

    BuildDeepSeekRequestBody = JsonConverter.ConvertToJson(oRoot)
End Function

这段实现虽不复杂却至关重要。许多 Access 调用 Web API 的失败案例,往往源于网络之外的 JSON 拼装细节错误。


2. 流式输出:借助 curl+SSE 突破限制

Access 和 VBA 本身对现代 AI 接口的流式返回支持有限。accessAI 采用的策略是:

  • 先将请求体保存为临时 JSON 文件。
  • 调用系统内置 curl 发起请求。
  • 利用 SSE 方式接收模型分段输出。
  • 将响应写入临时文件。
  • VBA 定时轮询该临时文件。
  • 解析 data 行中的 delta.content 并实时刷新至窗体。


此方案优势显著:

关键点

价值体现

利用 curl

绕过 VBA 对流式 HTTP 支持的不足

使用临时文件

简化进程间数据交换流程

轮询解析 SSE

在 Access 环境下达成近实时输出

分段刷新 UI

改善交互体验,消除长时间等待感

这是典型的“老平台兼容新接口”的工程思路:不硬碰硬,而是借用系统现有工具拆解难题。


3. 回退机制:非流式环境亦可用

项目并未绑定单一方案。

若系统中缺失 curl,会自动切换至同步请求模式,并叠加“打字机效果”,使结果逐段呈现而非一次性弹出。

这一步十分关键,因为企业环境各异:

  1. 部分机器系统版本较旧。
  2. 部分环境权限受限。
  3. 部分客户端组件不完整。

若无此回退方案,项目仅在少数机器上表现良好。现在的双通道设计显然更贴合真实业务需求。


4. Markdown 渲染:提升输出可读性

大模型返回的内容常包含结构化 Markdown。若直接塞入文本框,体验较差。

accessAI 在模块中实现了 Markdown 到 Access 富文本 HTML 的转换,支持:

  1. 标题层级。
  2. 粗体、斜体及粗斜体。
  3. 删除线样式。
  4. 行内代码与代码块。
  5. 有序与无序列表。
  6. 引用块格式。
  7. 水平分割线。
  8. 链接和图片占位提示。

其思路并非追求完整的 Markdown 标准,而是围绕 Access 富文本控件支持的 HTML 子集做适配。即追求“在 Access 里显示效果最好”,而非“实现全功能 Markdown 引擎”。

这是一种非常合理的取舍。


5. UTF-8 处理:避开常见编码坑

项目专门处理了 UTF-8 读写问题,包括:

  1. 使用 ADODB.Stream 读写 UTF-8 内容。
  2. 写入时去除 BOM 头。
  3. 读取响应时将 UTF-8 转换为 VBA 字符串。

这对中文用户尤为关键。

若无此处理,常见问题包括:

  1. 中文提问导致请求异常。
  2. AI 返回中文出现乱码。
  3. 流式响应中断后解析失败。

许多人对接 API 失败,往往不是接口文档问题,而是编码细节。accessAI 提前解决了这一隐患。



四、接入步骤:如何集成到自己的项目


第一步:导入基础模块

将以下两个模块导入 Access 数据库:

  1. JsonConverter.bas
  2. Module_Markdown.bas

其中,JsonConverter.bas 负责 JSON 解析,Module_Markdown.bas 为核心模块。

第二步:添加 VBA 引用

打开 VBA 编辑器:

工具 → 引用

勾选此项:

Microsoft Scripting Runtime

这是字典对象等功能的基础依赖。

第三步:配置接口参数

修改模块中的常量配置,填入自己的 API Key。目前仅支持 deepseek,后续计划接入更多大模型!

Private Const API_KEY   As String = "你的 API Key"
Private Const API_URL   As String = "https://api.deepseek.com/chat/completions"
Private Const API_MODEL As String = "deepseek-chat"


若后续扩展更多模型,此处将是自然的配置入口。

第四步:一键生成 AI 问答窗体

在 VBA 立即窗口执行:

CreateAIForm 

执行后,项目将自动创建名为 frmAI 的窗体,并生成核心控件:

控件名

功能说明

txtQ

输入问题区域

btnAsk

提交查询按钮

lblMsg

状态显示标签

txtAnswer

AI 返回结果显示区


运行效果预览

动图为 GIF 截图示例





五、实际业务应用场景



列举几个贴近业务的用法。

场景一:单据录入辅助

在采购单、入库单、售后记录、客户拜访记录等表单中,用户录入基础信息后,可让 AI 自动补充:

  1. 备注说明。
  2. 风险提示。
  3. 标准化描述。
  4. 后续处理建议。

此类需求本质无需复杂对话,只需将当前表单字段拼成提示词即可。

场景二:内部知识问答

若 Access 系统是部门工作平台,可将 AI 问答作为“业务帮助入口”,例如:

  1. 某字段填写规范。
  2. 特定异常状态含义。
  3. 单据流程下一步骤。
  4. 查询条件组合方法。

相比翻阅帮助文档,用户体验更为直接。

场景三:报表解读与总结

Access 系统常有现成查询和统计报表。将结果转为结构化文本后,交由 AI 处理:

  1. 本月数据摘要。
  2. 异常点说明。
  3. 趋势概括。
  4. 管理层汇报草稿。

此类场景不要求完全自动化,但作为“初稿生成器”极合适。

场景四:文本规范化处理

针对售后记录、巡检记录、客服备注、生产异常说明等自由文本字段,AI 可承担:

  1. 语句润色。
  2. 内容归纳。
  3. 标准术语替换。
  4. 风险标签提取。

Access 在企业常承担轻量信息系统角色,而此类文本处理需求频率极高。


六、结语与展望



我认为该项目最有价值的地方,是嵌入现有业务系统的可行性。主要特点如下:

  1. 使用 VBA 构造标准聊天请求,并通过 JSON 序列化降低错误率。
  2. 使用 curl + SSE 在 Access 中实现流式输出体验。
  3. 通过同步回退 + 打字机效果,兼顾不同 Windows 环境。
  4. 将 Markdown 转为 Access 富文本 HTML,提升结果可读性。
  5. 通过自动建窗体,降低 AI 功能接入和演示成本。

若您从事 Access 开发,很值得深入研究。它展示的不仅是孤立技巧,而是一条完整落地路径:如何在不重写系统前提下,为 Access 补上 AI 能力。


测试环境建议参考:

  1. Microsoft Access 2010 及以上,推荐 2016、2019、365。
  2. Windows 7 及以上操作系统。
  3. 如需更佳流式体验,建议 Windows 10 1803 及以上。

参考资料

  1. DeepSeek 平台:https://platform.deepseek.com/
  2. VBA-JSON:https://github.com/VBA-tools/VBA-JSON



完整源码获取


项目已开源,欢迎 Star:

GitHub 地址:
https://github.com/miaowei2/accessAI

包含:

  • Module_Markdown.bas — 核心模块(AI 调用 + Markdown 渲染 + 窗体生成)
  • JsonConverter.bas — JSON 解析模块
  • AI.accdb — 示例数据库,导入即可体验

下载后直接导入即可使用,无需额外配置。



写在最后


Access 虽“老”,但在中小企业、政府机关、制造业中仍有广泛应用。多年运行的 Access 系统承载着核心业务数据,短期内难以迁移。

与其被动淘汰,不如用技术手段赋予新能力。AI 大模型接入看似门槛高,但 accessAI 已跑通核心链路——两个模块、一行命令、几分钟即可在 Access 系统内实现 AI 问答功能。

若您的团队正在使用 Access,或您是一名 Access 开发者,欢迎试用此开源工具。 觉得有用,请帮忙转发给更多需要的人。


上一篇

AccessAI 开源项目迎来更新,新增 DeepSeek V4 多模型支持与自定义端点。系统强化对话历史持久化,支持会话管理。核心亮点包括数据库对象自动分析,读取表结构及样例数据供 AI 研判。界面升级为气泡式聊天,提供富文本与 WebBrowser 双模式。此次更新旨在将 Access 转型为嵌入式 AI 辅助模块,提升业务智能化水平。

下一篇

本文精选 20 个 Excel 核心公式,覆盖逻辑判断、多条件查找、统计汇总、文本处理及新版动态数组等功能。通过具体场景案例演示,帮助财务、HR 等岗位人员解决 80% 日常数据处理难题,大幅提升工作效率。建议收藏学习,按需调用。

相关阅读

本文精选 20 个 Excel 核心公式,覆盖逻辑判断、多条件查找、统计汇总、文本处理及新版动态数组等功能。通过具体场景案例演示,帮助财务、HR 等岗位人员解决 80% 日常数据处理难题,大幅提升工作效率。建议收藏学习,按需调用。
AccessAI 开源项目迎来更新,新增 DeepSeek V4 多模型支持与自定义端点。系统强化对话历史持久化,支持会话管理。核心亮点包括数据库对象自动分析,读取表结构及样例数据供 AI 研判。界面升级为气泡式聊天,提供富文本与 WebBrowser 双模式。此次更新旨在将 Access 转型为嵌入式 AI 辅助模块,提升业务智能化水平。