文档开发者 (SDK)Agent SDK (AI 集成)

Agent SDK (AI 整合)

OSDK 的终极目标之一,是成为企业内 AI Agent 的完美工具箱(Toolbox)

由于 Loambase Foundry 的本体层具备极其严谨的 Schema 定义和 Action 参数校验机制,Agent SDK 可以做到“零代码”将平台能力对接给大模型


1. 为什么大模型需要本体?

在很多企业应用中,大模型 (LLM) 直接连接底层关系型数据库(Text-to-SQL)。这会带来严重的幻觉越权风险

  • 模型不知道 t_usr_tbl 代表什么。
  • 模型可能会生成 DELETE FROM users 这样危险的语句。

在 Foundry 架构下,大模型永远看不到底层的数据库表结构。它只能看到你精心定义好的业务对象(如 Employee)和业务动作(如 promoteEmployee)。


2. 自动生成 Tool Calling Schema

Agent SDK 提供了一个 createAgentTools 方法。它会自动读取 Ontology 的元数据,并将其翻译为 OpenAI Function Calling 或 LangChain Tools 所需的 JSON Schema 格式。

import { createAgentTools } from "@loambase/osdk-ai";
import { client } from "./.osdk/client";
 
// SDK 自动将 Ontology 和 Action 转换为大模型兼容的工具集
const foundryTools = createAgentTools(client, {
  // 允许大模型查询这两个对象
  includeObjects: ["Employee", "Order"],
  // 允许大模型执行这个写动作
  includeActions: ["promoteEmployee"]
});

例如,对于 promoteEmployee 这个 Action,SDK 会自动生成如下的大模型提示词描述:

“promoteEmployee: Use this tool to promote an employee. Required arguments: employeeId (string), reasonInput (string), newLevel (string).“


3. 接入 LangChain 或 OpenAI

拿到 foundryTools 后,你就可以直接将其注入给你的 Agent 框架。大模型会自主思考何时需要查询数据,何时需要执行操作。

import { initializeAgent } from "langchain/agents";
import { ChatOpenAI } from "langchain/chat_models/openai";
 
const chatModel = new ChatOpenAI({ temperature: 0 });
 
// 将 Foundry Tools 注入给 LangChain Agent
const agent = await initializeAgent({
  tools: [...foundryTools],
  llm: chatModel
});
 
// 让 AI 自主执行任务
await agent.execute("Find John and promote him to L5 due to good performance.");

AI 的思考与执行链条:

  1. 思考:我需要先找到 John 的 Employee ID。
  2. 动作:调用 Search_Employee Tool,传入参数 keyword: "John"
  3. 观察:平台返回了 John 的 ID 为 EMP-001
  4. 思考:现在我可以执行晋升动作了。
  5. 动作:调用 Action_promoteEmployee Tool,传入 employeeId: "EMP-001", newLevel: "L5", reasonInput: "good performance"
  6. 观察:平台返回操作成功。
⚠️

权限透传 (Context Propagation)

在 Agent 场景中,Agent 调用 SDK 时必须透传终端用户(End-User)的 Token,而不是使用 Agent 自身的全局管理员 Token。这是为了确保大模型在替用户执行 promoteEmployee 时,平台后端的权限校验依然能拦截无权限的操作。