首页
/ WeHomeBot/Ling项目API使用指南:构建智能对话工作流

WeHomeBot/Ling项目API使用指南:构建智能对话工作流

2025-06-19 08:54:43作者:咎岭娴Homer

项目概述

WeHomeBot/Ling是一个基于事件驱动的LLM(大语言模型)交互管理框架,它提供了构建复杂对话工作流的能力。通过模块化设计和丰富的API,开发者可以轻松实现多轮对话、流式响应、模板渲染等功能。

核心概念解析

1. 配置参数详解

ChatConfig 配置接口

interface ChatConfig {
  model_name: string;      // 指定使用的LLM模型名称
  endpoint: string;        // API服务端点地址
  api_key: string;         // 认证用的API密钥
  api_version?: string;    // 可选API版本号(部分提供商需要)
  session_id?: string;     // 自定义会话ID
  max_tokens?: number;     // 生成内容的最大token数
  sse?: boolean;           // 是否启用服务器推送事件
}

ChatOptions 选项接口

interface ChatOptions {
  temperature?: number;        // 控制生成随机性(0-1)
  presence_penalty?: number;   // 重复惩罚系数
  frequency_penalty?: number;  // 频率惩罚系数
  stop?: string[];            // 停止序列
  top_p?: number;             // 核心采样参数
  response_format?: any;       // 响应格式设置
  max_tokens?: number;        // 最大生成token数
  quiet?: boolean;            // 是否抑制输出
  bot_id?: string;            // 自定义机器人ID
}

Ling核心类使用指南

初始化实例

const ling = new Ling(config, options);

主要方法详解

1. 创建对话机器人

createBot(root?: string, config?: Partial<ChatConfig>, options?: Partial<ChatOptions>)
  • root参数:设置JSON输出的根路径
  • 示例:创建一个专门处理产品咨询的机器人
const productBot = ling.createBot('product_info', {
  model_name: 'gpt-4',
  temperature: 0.7
});

2. 服务器推送事件(SSE)配置

setSSE(sse: boolean)

SSE技术允许服务器主动向客户端推送数据,非常适合实时对话场景。启用后,客户端可以实时接收对话更新而无需轮询。

3. 工作流管理

  • close():优雅关闭所有连接
  • cancel():立即终止所有操作

事件系统

Ling继承自EventEmitter,提供丰富的事件监听:

ling.on('message', (msg) => {
  console.log('收到消息:', msg);
});

ling.on('finished', () => {
  console.log('所有操作已完成');
});

ChatBot类深度解析

核心方法

1. 提示词管理

// 添加系统提示(保留现有提示)
addPrompt(promptTpl: string, promptData?: Record<string, any>)

// 设置系统提示(替换现有提示)
setPrompt(promptTpl: string, promptData?: Record<string, string>)

提示词支持Nunjucks模板引擎,可实现动态内容:

bot.addPrompt(`你是一位{{ expertise }}专家`, {
  expertise: '金融投资'
});

2. 对话历史管理

// 添加历史记录
addHistory(messages: ChatCompletionMessageParam[])

// 设置历史记录
setHistory(messages: ChatCompletionMessageParam[])

3. 消息过滤

// 添加过滤器
addFilter(filter: ((data: any) => boolean) | string | RegExp | FilterMap)

// 清除所有过滤器
clearFilters()

对话流程控制

发起对话

async chat(message: string | ChatCompletionContentPart[])

示例:发送混合内容消息

await bot.chat([
  { type: 'text', text: '请分析这张图片' },
  { type: 'image_url', image_url: 'https://example.com/image.jpg' }
]);

事件监听

ChatBot提供细粒度的事件系统:

bot.on('string-response', (content) => {
  console.log('收到文本响应:', content);
});

bot.on('inference-done', (content) => {
  console.log('推理完成:', content);
});

最佳实践

1. 多机器人协作模式

// 创建专业领域机器人
const medicalBot = ling.createBot(null, { model_name: 'med-gpt' });
const legalBot = ling.createBot(null, { model_name: 'legal-gpt' });

// 设置各自专业提示
medicalBot.setPrompt('你是一位资深医学专家...');
legalBot.setPrompt('你是一位专业法律顾问...');

// 并行处理用户咨询
await Promise.all([
  medicalBot.chat('解释一下糖尿病症状'),
  legalBot.chat('劳动合同纠纷如何处理')
]);

2. 流式响应处理

ling.setSSE(true);

ling.on('message', (msg) => {
  // 实时更新UI
  updateChatUI(msg.data);
});

3. 错误处理机制

bot.on('error', (err) => {
  console.error('对话出错:', err);
  // 执行重试或降级逻辑
});

总结

WeHomeBot/Ling框架通过清晰的API设计和强大的事件系统,为开发者提供了构建复杂对话系统的能力。无论是简单的单轮对话,还是需要多机器人协作的复杂工作流,都能通过该框架高效实现。掌握本文介绍的核心概念和API使用方法,将帮助您快速构建基于LLM的智能对话应用。

登录后查看全文
热门项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
22
6
docsdocs
OpenHarmony documentation | OpenHarmony开发者文档
Dockerfile
138
1.9 K
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
8
0
金融AI编程实战金融AI编程实战
为非计算机科班出身 (例如财经类高校金融学院) 同学量身定制,新手友好,让学生以亲身实践开源开发的方式,学会使用计算机自动化自己的科研/创新工作。案例以量化投资为主线,涉及 Bash、Python、SQL、BI、AI 等全技术栈,培养面向未来的数智化人才 (如数据工程师、数据分析师、数据科学家、数据决策者、量化投资人)。
Jupyter Notebook
71
64
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
344
1.28 K
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
920
551
PaddleOCRPaddleOCR
飞桨多语言OCR工具包(实用超轻量OCR系统,支持80+种语言识别,提供数据标注与合成工具,支持服务器、移动端、嵌入式及IoT设备端的训练与部署) Awesome multilingual OCR toolkits based on PaddlePaddle (practical ultra lightweight OCR system, support 80+ languages recognition, provide data annotation and synthesis tools, support training and deployment among server, mobile, embedded and IoT devices)
Python
47
1
easy-eseasy-es
Elasticsearch 国内Top1 elasticsearch搜索引擎框架es ORM框架,索引全自动智能托管,如丝般顺滑,与Mybatis-plus一致的API,屏蔽语言差异,开发者只需要会MySQL语法即可完成对Es的相关操作,零额外学习成本.底层采用RestHighLevelClient,兼具低码,易用,易拓展等特性,支持es独有的高亮,权重,分词,Geo,嵌套,父子类型等功能...
Java
36
8
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
193
273
leetcodeleetcode
🔥LeetCode solutions in any programming language | 多种编程语言实现 LeetCode、《剑指 Offer(第 2 版)》、《程序员面试金典(第 6 版)》题解
Java
59
16