首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >VFP AI 插件开发花絮11:RAG.dll 帮助文档

VFP AI 插件开发花絮11:RAG.dll 帮助文档

作者头像
firstxinjie
发布2026-04-02 11:03:50
发布2026-04-02 11:03:50
110
举报

RAG.dll 帮助文档

概述

RAG.MTServer 是一个基于 VFP 的 COM 可调用类(OlePublic),用于管理和调用本地或远程的 AI 服务(如 AnythingLLM)。该类封装了服务的初始化、启动、工作区管理以及知识库操作等功能,便于在 VFP 或其他支持 COM 的环境中集成 AI 能力。


注册

  1. 打开命令行:以管理员身份打开命令提示符(cmd)。
  2. 运行注册命令:使用 ‎regsvr32 工具注册 DLL。导航到 DLL 所在目录,执行:
代码语言:javascript
复制
regsvr32 RAG.dll

属性

属性名

类型

说明

‎oManager

Object

受保护的内部对象,根据设置的提供商动态创建(如 AnythingLLM),用于执行具体操作。


方法

1. Set(tcServerName, tcApiKey, tcExePath, tcServerURL, tlLog)

功能 初始化服务提供商,配置连接所需的基本参数。

参数

  • tcServerName(字符型):服务提供商名称,目前仅支持 ‎"AnythingLLM"(不区分大小写)。
  • tcApiKey(字符型):API 密钥。
  • tcExePath(字符型):可执行程序的完整路径(如 AnythingLLM 的启动路径)。
  • tcServerURL(字符型):服务地址(如 ‎http://localhost:3001)。
  • tlLog(逻辑型,可选):是否启用日志记录,默认 ‎.T.

返回值 逻辑型(.T. 表示成功,.F. 表示失败)。

注意事项

  • 前四个参数为必需参数,调用时必须提供前四个参数。
  • 若提供商为 ‎"RAGFLOW",当前仅预留接口,未实现。

示例

代码语言:javascript
复制
loServer = CreateObject("RAG.MTServer")
llSuccess = loServer.Set("AnythingLLM", "your-api-key", "C:\path\to\anythingllm.exe", "http://localhost:3001", .T.)

2. IsRunning()

功能 检查服务是否已经处于运行状态。

返回值 逻辑型:.T. 表示服务已准备就绪(正在运行),.F. 表示未运行。


3. Start(tnTimeoutSeconds)

功能 启动服务(如 AnythingLLM 的本地进程)。

参数

  • tnTimeoutSeconds(数值型,可选):超时时间(秒),默认 30。若服务启动较慢,可适当增加该值。

返回值 逻辑型:.T. 表示启动成功,.F. 表示失败。

示例

代码语言:javascript
复制
llStarted = loServer.Start(60)  && 等待60秒

4. ListAllWorkSpaces()

功能 获取所有工作区信息,用于提取各工作区的 Slug(唯一标识符)。

返回值

  • 若仅存在默认工作区,返回字符型(工作区 Slug)。
  • 若存在多个工作区,返回 JSON 对象,可从中解析各工作区的 Slug。

备注 常用于在调用 WarmupVectorSearch 前获取工作区标识。


5. Warmup(tcWorkspaceSlug, tcApiKey)

功能 预热知识库,将指定工作区的知识库加载到内存,提高后续查询的响应速度。

参数

  • tcWorkspaceSlug(字符型,可选):工作区 Slug。若仅有一个默认工作区,可先调用 ‎ListAllWorkSpaces() 获取。
  • tcApiKey(字符型,可选):API 密钥(若已在 ‎Set 中配置,可省略)。

返回值 JSON 对象,包含预热结果信息。

示例

代码语言:javascript
复制
loWorkspaces = loServer.ListAllWorkSpaces()
* 假设返回的是默认工作区的 Slug 字符串
lcSlug = loWorkspaces
loServer.Warmup(lcSlug)

6. VectorSearch(tcQuery, tnTopN, tcWorkspaceSlug, tcApiKey)

功能 对指定工作区的知识库进行向量搜索,返回与查询最相关的内容。

参数

  • tcQuery(字符型):用户提问或查询文本。
  • tnTopN(数值型,可选):返回的最大上下文片段数量,默认 5。
  • tcWorkspaceSlug(字符型,可选):工作区 Slug,默认使用默认工作区。
  • tcApiKey(字符型,可选):API 密钥(可选,若已配置可省略)。

返回值 JSON 对象,包含搜索结果;若失败则返回 .NULL.

示例

代码语言:javascript
复制
loResult = loServer.VectorSearch("什么是人工智能?", 3)
IF !ISNULL(loResult)
    ? loResult   && 处理 JSON 结果
ENDIF

7. GetDebugObject()

功能 辅助调试方法,用于在 COM 调用环境中获取当前对象的调试实例,以便在 VFP IDE 中设置断点进行调试。

返回值 返回一个新的 MTServer 对象实例,该实例可在调试器中操作。

备注 具体使用方法参考公众号文章:xinjie 的 VFP--生产力技术(一):调试 VFP COM 的技术


使用示例

以下是一个完整的调用流程:

代码语言:javascript
复制
LOCAL loServer, llSet, llRunning, llStarted, loResult

* 创建对象
loServer = CREATEOBJECT("RAG.MTServer")

* 设置服务
llSet = loServer.Set("AnythingLLM", "sk-xxxx", "C:\anythingllm\anythingllm.exe", "http://localhost:3001", .T.)
IF NOT llSet
    MESSAGEBOX("设置失败")
    RETURN
ENDIF

* 检查并启动服务
IF NOT loServer.IsRunning()
    llStarted = loServer.Start(45)
    IF NOT llStarted
        MESSAGEBOX("启动失败")
        RETURN
    ENDIF
ENDIF

* 获取工作区 Slug
lcSlug = loServer.ListAllWorkSpaces()

* 预热
loServer.Warmup(lcSlug)

* 执行搜索
loResult = loServer.VectorSearch("如何使用 VFP 调用 COM 对象?", 5, lcSlug)
IF ISNULL(loResult)
    MESSAGEBOX("搜索失败")
ELSE
    * 处理返回的 JSON 结果
    ? loResult
ENDIF

注意事项

  • 当前版本仅实现了 ‎"AnythingLLM" 提供商的支持,‎"RAGFLOW" 仅为预留接口。
  • Set 方法中要求至少传入前四个参数。
  • 所有返回的 JSON 对象为原生 JS JSON对象。
  • 调试方法 ‎GetDebugObject 仅在开发阶段使用,发布前应移除相关调用。

=======================

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 xinjie的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • RAG.dll 帮助文档
    • 注册
    • 属性
    • 方法
      • 1. Set(tcServerName, tcApiKey, tcExePath, tcServerURL, tlLog)
      • 2. IsRunning()
      • 3. Start(tnTimeoutSeconds)
      • 4. ListAllWorkSpaces()
      • 5. Warmup(tcWorkspaceSlug, tcApiKey)
      • 6. VectorSearch(tcQuery, tnTopN, tcWorkspaceSlug, tcApiKey)
      • 7. GetDebugObject()
    • 使用示例
    • 注意事项
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档