@AITool
工具名必须使用 kebab-case。需提供 requiredApiPermission、argParser 与 OpenAI 风格的 toolDetail。
TSXai-tool
1import { AITool, Service } from "@quan-erp/shared-backend-core";
2
3@Service()
4export class ExchangeRateService {
5 @AITool({
6 requiredApiPermission: [{ method: "get", url: "/exchange-rate/" }],
7 argParser: (args) => [args.fromId, args.toId],
8 toolDetail: {
9 type: "function",
10 function: {
11 name: "get-rate",
12 description: "Get exchange rates",
13 parameters: { /* JSON schema */ },
14 },
15 },
16 })
17 async getRate(fromId: number, toId: number) { /* … */ }
18}实体 AI 注解
控制 AI 引擎在 TypeORM 实体上可扫描的内容。表名需以 metadata.name 前缀,实体需继承 BaseEntity。
- @AIEntityInfo({ description }) — 为 AI 描述该实体
- @AIExcludeEntity() — 将整个实体从 AI 索引中隐藏
- @AIExcludeColumn() — 隐藏敏感列(密码、机密等)
TSXentity
1import {
2 AIEntityInfo,
3 AIExcludeColumn,
4 BaseEntity,
5} from "@quan-erp/shared-backend-core";
6import { Column, Entity } from "typeorm";
7import metadata from "../../module.metadata.json" with { type: "json" };
8
9@AIEntityInfo({ description: "User credentials store" })
10@Entity(`${metadata.name}_credential`)
11export class CredentialEntity extends BaseEntity {
12 @AIExcludeColumn()
13 @Column({ type: "varchar", select: false })
14 password: string;
15}