Compose
src/compose.ts 提供 composePipe(从左到右组合一元函数)以及面向 Prompt、意图、Token、搜索等场景的现成流水线。以下为每个导出函数各一例(仅类型的导出略)。
项目中的实现
- 源码:
src/compose.ts
各函数示例
composePipe
import { composePipe } from 'wssf-kage-js';
const f = composePipe(
(x: number) => x + 1,
(x: number) => String(x)
);
f(2); // => '3'
trim
import { trim } from 'wssf-kage-js';
trim(' x '); // => 'x'
removeExtraSpaces
import { removeExtraSpaces } from 'wssf-kage-js';
removeExtraSpaces('a b'); // => 'a b'
stripHtml
import { stripHtml } from 'wssf-kage-js';
stripHtml('<p>hi</p>'); // => 'hi'
sanitizePrompt
import { sanitizePrompt } from 'wssf-kage-js';
sanitizePrompt(' <b>OK</b> text ');
maskPhone
import { maskPhone } from 'wssf-kage-js';
maskPhone('13812345678');
maskEmail
import { maskEmail } from 'wssf-kage-js';
maskEmail('longname@mail.com');
safetyGate
import { safetyGate } from 'wssf-kage-js';
safetyGate('联系 13812345678 或 a@b.com');
checkFinance
import { checkFinance } from 'wssf-kage-js';
checkFinance({ text: '美元汇率' }); // => intent: 'FINANCE'
checkCoding
import { checkCoding } from 'wssf-kage-js';
checkCoding({ text: '这段代码怎么优化' }); // => intent: 'CODING'(若尚未被标为其它意图)
defaultIntent
import { defaultIntent } from 'wssf-kage-js';
defaultIntent({ text: '你好' }); // => intent: 'GENERAL'
routeIntent
import { routeIntent } from 'wssf-kage-js';
routeIntent({ text: '美元汇率怎么走' });
countTokens
import { countTokens } from 'wssf-kage-js';
countTokens({ text: 'abcd' }); // => tokens ≈ ceil(len/4)
checkLimit
import { checkLimit } from 'wssf-kage-js';
checkLimit({ text: 'x', tokens: 200 }); // => isOver: true
truncateIfNeed
import { truncateIfNeed } from 'wssf-kage-js';
truncateIfNeed({ text: 'x'.repeat(500), isOver: true });
tokenManager
import { tokenManager } from 'wssf-kage-js';
tokenManager({ text: 'x'.repeat(500) });
removeApologies
import { removeApologies } from 'wssf-kage-js';
removeApologies('抱歉,作为一个 AI 模型,我不能……');
removeAIPreach
import { removeAIPreach } from 'wssf-kage-js';
removeAIPreach('我无法提供投资建议');
formatMarkdown
import { formatMarkdown } from 'wssf-kage-js';
formatMarkdown('正文'); // 无 # 时自动加标题前缀
polishResponse
import { polishResponse } from 'wssf-kage-js';
polishResponse(' 一段回答 ');
injectRole
import { injectRole } from 'wssf-kage-js';
injectRole('审计员')('查账');
injectContext
import { injectContext } from 'wssf-kage-js';
injectContext('Q4 报表')('总结风险');
addOutputFormat
import { addOutputFormat } from 'wssf-kage-js';
addOutputFormat('用列表回答');
buildPrompt
import { buildPrompt } from 'wssf-kage-js';
buildPrompt('如何拆分组件?');
validateSchema
import { validateSchema } from 'wssf-kage-js';
validateSchema({}); // => 带 error: 'Invalid Data'
handleErrors
import { handleErrors } from 'wssf-kage-js';
handleErrors({ id: 1, error: 'x' }); // => fallback: true
logTelemetry
import { logTelemetry } from 'wssf-kage-js';
logTelemetry({ event: 'click' }); // 控制台输出 Tracking
dataPipeline
import { dataPipeline } from 'wssf-kage-js';
dataPipeline({ id: '1', name: 'ok' });
heavyFilter
import { heavyFilter } from 'wssf-kage-js';
heavyFilter([
{ priority: 10, score: 1 },
{ priority: 1, score: 99 }
]);
sortData
import { sortData } from 'wssf-kage-js';
sortData([
{ priority: 10, score: 1 },
{ priority: 10, score: 99 }
]);
limitResults
import { limitResults } from 'wssf-kage-js';
limitResults([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]);
processSearchList
import { processSearchList } from 'wssf-kage-js';
processSearchList([
{ priority: 10, score: 1, id: 'a' },
{ priority: 1, score: 99, id: 'b' }
]);
特别适合
- Prompt 清洗
- PII 脱敏
- Token 管理
- 多步数据转换