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 的思考与执行链条:
- 思考:我需要先找到 John 的 Employee ID。
- 动作:调用
Search_EmployeeTool,传入参数keyword: "John"。 - 观察:平台返回了 John 的 ID 为
EMP-001。 - 思考:现在我可以执行晋升动作了。
- 动作:调用
Action_promoteEmployeeTool,传入employeeId: "EMP-001", newLevel: "L5", reasonInput: "good performance"。 - 观察:平台返回操作成功。
权限透传 (Context Propagation)
在 Agent 场景中,Agent 调用 SDK 时必须透传终端用户(End-User)的 Token,而不是使用 Agent 自身的全局管理员 Token。这是为了确保大模型在替用户执行 promoteEmployee 时,平台后端的权限校验依然能拦截无权限的操作。