【描述】
随着数字技术的发展,越来越多的人开始通过电子设备阅读书籍,但纸质书依然有着 不可替代的地位。为了更好地推广阅读文化,提升读者的阅读体验,一家名为“悦读阁” 的书店计划开发一款智能阅读助手。这款助手的目标是帮助读者快速找到他们感兴的书籍,解答关于书籍内容的问题,并提供个性化的阅读建议。 小悦是一名资深的书店店员,对书籍非常了解,但面对越来越多的顾客咨询,她需要 一个智能助手来分担一些基础问题,让她有更多时间为顾客提供深度的阅读指导。你 作为一位 AI 工程师,被委托开发这款智能阅读助手。助手需要能够处理与书籍相关的 问题,包括但不限于书籍的基本信息、内容摘要、作者介绍等。
【目标】
1.
助手的回答准确率尽可能高。
○
书籍基本信息的精准提取:包括书名、作者、出版社、ISBN
编号、出版日
期等关键信息
○
内容摘要的准确概括:确保从数据集中准确摘要,不偏离核心内容
○
作者背景信息的正确呈现:确保从数据集中准确摘要,不过度搜索外部信息
○
版本差异识别:区分同一书籍的不同版本(如不同时间出版)特征
2.
每次咨询回答时间尽可能短。
从用户提交问题到
AI
助手返回答案,
响应时间越短越好
,提升客户体验和工作效率。
•
实现策略:
○
缓存高频问题答案
:构建高频问题
Cache
,常见问法快速响应。
○
多级索引结构
:建立文档字段级别的索引,加快数据检索。
○
分阶段处理
:对输入意图、字段、关键信息做分阶段提取并并行处理。
3.
历史问答需要能作为后续提问的依据
用户一次会话中的多个问题往往具有上下文关联性,
Agent
应具备
“
记忆
”
能力,能基于
前文理解当前问题。
•
实现策略
○
Session
记忆机制
:为每位客户维持会话上下文,并关联上下问题的关键信 。
○
多轮对话状态管理
:采用意图槽位填充机制跟踪用户问题的完成度。
○
历史问答摘要归档
:对长对话自动提取摘要要点用于后续引用。
○
引用溯源能力
:回答中可明确引用前序问题或文档位置。
【详细说明】
1.
信息审查与问答规则
智能阅读助手能够基于固定规则对书籍内容进行细致审查,重点识别并避免以下七类
常见问题:
○
数据不完整
:缺少书名、作者、
ISBN
、出版社、出版时间等任何一项关键
字段。
例:书名:《小王子》,作者:【】,
ISBN
:
9787020042494
说明:作者缺失,属于数据不完整。
○
信息错误
:字段内容与事实不符。
例:
ISBN
填写为
1234567890123
(实为
9787020042494
)
说明:
ISBN
不正确,属于信息错误。
○
版本混淆
:同一书籍存在多个版本或译本时,信息交叉或混用。
例:回答中将
2015
版定价与
2020
版的页数混合引用。
○
作者混淆
:多个同名作者或多作者合作时,信息对应错误。 例:把“
刘慈欣(科幻作家)
”
与
“
刘慈欣(同名画家)
”
混为一人。
○
内容摘要失真
:摘要偏离原著主旨或出现明显剧情捏造。
○
分类错误
:将小说误标为纪实文学、将儿童读物误标为成人向等。
○
知识边界超出
:回答引入未在数据集中存在的内容或凭空扩写。
2
复杂内容处理能力
○
封面识别:支持 OCR
识别图书封面 ,获取相关数据。
○
多语言支持:识别并处理英、日、中文、阿拉伯文等多语种元数据与内容。
【具体实现】
{
"ID": "d063e13arp61nho53p70",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T01:29:41Z",
"UpdatedAt": "2025-04-26T03:24:56Z",
"DeletedAt": null,
"TenantID": "1000000005",
"WorkspaceID": "personal-10023",
"Name": "中英转换",
"Description": "转换",
"Status": "Published",
"RuntimeStatus": "Failed",
"Icon": {
"Path": "upload/full/a8/bc/fa4cb109cb3bab2220c56cb67ac1e6bf6542ff8daadb60b2b594dbf6f964",
"ID": "d063e13arp61nho53p6g",
"Sha256": "a8bcfa4cb109cb3bab2220c56cb67ac1e6bf6542ff8daadb60b2b594dbf6f964",
"Size": 75109
},
"Hash": "51d0e43bba71cffda8f6be9ebd050e93",
"LastHash": "7772da818f88b5502383c11d4376e916",
"Nodes": [
{
"ID": "d063e13arp61nho53p7g",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T01:29:41Z",
"UpdatedAt": "2025-04-26T01:50:54Z",
"DeletedAt": null,
"Type": "Start",
"Name": "Start",
"WorkflowID": "d063e13arp61nho53p70",
"Layout": {
"X": 100,
"Y": 200
},
"StartConfig": {
"InputSchema": [
{
"Name": "i",
"Desc": "用户输入",
"Required": true,
"Type": 0
}
],
"OutputSchema": [
{
"Name": "i",
"Desc": "用户输入",
"Required": true,
"Type": 0
}
]
}
},
{
"ID": "d063e13arp61nho53p80",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T01:29:41Z",
"UpdatedAt": "2025-04-26T02:51:54Z",
"DeletedAt": null,
"Type": "End",
"Name": "End",
"WorkflowID": "d063e13arp61nho53p70",
"Layout": {
"X": 4612.2393750529,
"Y": 220.8203572343
},
"Depends": [
{
"NodeID": "d064hnrarp61nho669s0",
"PortID": "if01"
},
{
"NodeID": "d064ibjarp61nho66kgg"
}
],
"EndConfig": {
"InputVariables": [
{
"Type": "Reference",
"Name": "output",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063sdrsinkm501djv10",
"OutputFieldPath": "回答问题.raw_output"
}
}
},
{
"Type": "Reference",
"Name": "output1",
"ValueFrom": {
"OutputRef": {
"NodeID": "d064ibjarp61nho66kgg",
"OutputFieldPath": "大模型01.raw_output"
}
}
}
],
"OutputType": "Variable",
"OutputSchema": [
{
"Name": "output",
"Type": -1
}
]
}
},
{
"ID": "d063k8l5ipli2163fr40",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T01:42:59Z",
"UpdatedAt": "2025-04-26T02:31:25Z",
"DeletedAt": null,
"Type": "LLM",
"Name": "翻译",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 730.7113673236,
"Y": 92.0187247043
},
"Depends": [
{
"NodeID": "d063e13arp61nho53p7g"
}
],
"LLMConfig": {
"ModelID": "d0452ubarp61nho36mog",
"Temperature": 0.7,
"TopP": 0.5,
"MaxTokens": 256,
"InputVariables": [
{
"Type": "Reference",
"Name": "i",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063e13arp61nho53p7g",
"OutputFieldPath": "Start.i"
}
}
}
],
"Prompt": "# 角色(Role):\n中译英\n##技能:\n将用户输入从中文翻译为英文作为输出\n用户输入:{{i}}",
"OutputFormat": "text",
"OutputSchema": [
{
"Name": "raw_output",
"Type": 0
}
]
}
},
{
"ID": "d063sdrsinkm501djv10",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:00:24Z",
"UpdatedAt": "2025-04-26T03:24:46Z",
"DeletedAt": null,
"Type": "LLM",
"Name": "回答问题",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 3308.1784714643,
"Y": -9.4595147482
},
"Depends": [
{
"NodeID": "d063k8l5ipli2163fr40"
},
{
"NodeID": "d064ac3sinkos4gco890",
"PortID": "else"
},
{
"NodeID": "d064evbsinkokpn2m5l0"
}
],
"LLMConfig": {
"ModelID": "d0452ubarp61nho36mog",
"Temperature": 0.7,
"TopP": 0.5,
"MaxTokens": 256,
"InputVariables": [
{
"Type": "Reference",
"Name": "input",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063k8l5ipli2163fr40",
"OutputFieldPath": "翻译.raw_output"
}
}
},
{
"Type": "Reference",
"Name": "qur",
"ValueFrom": {
"OutputRef": {
"NodeID": "d0644ljarp61nho5q6fg",
"OutputFieldPath": "知识库01.outputList[0].output"
}
}
},
{
"Type": "Reference",
"Name": "select",
"ValueFrom": {
"OutputRef": {
"NodeID": "d064evbsinkokpn2m5l0",
"OutputFieldPath": "插件01.result"
}
}
}
],
"Prompt": "# 角色(Role)\n你是一个智能阅读助手,致力于帮助读者更好地进行阅读活动。\n\n# 限制(Constraint):\n当出现选择题时,题目可能是单选,也可能是多选,只输出选择序号即可,且只输出选择序号。多选题直接输出“AB,AC,BC,ABC”即可。\n\n#输入内容:\n用户输入:{{input}}\n知识库:{{qur}}\n数据库返回结果:{{select}}",
"OutputFormat": "text",
"OutputSchema": [
{
"Name": "raw_output",
"Type": 0
}
]
}
},
{
"ID": "d0644ljarp61nho5q6fg",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:17:58Z",
"UpdatedAt": "2025-04-26T03:15:59Z",
"DeletedAt": null,
"Type": "Knowledge",
"Name": "知识库01",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 1176.4602170498,
"Y": 603.4175336292
},
"Depends": [
{
"NodeID": "d063k8l5ipli2163fr40"
}
],
"KnowledgeConfig": {
"QueryVariable": {
"Type": "Reference",
"Name": "query",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063k8l5ipli2163fr40",
"OutputFieldPath": "翻译.raw_output"
}
}
},
"KnowledgeRange": [
"01967010-bd73-7a01-8ef9-2e8509d7a54a"
],
"OutputSchema": [
{
"Name": "outputList",
"Required": true,
"Type": 9,
"SubParameters": [
{
"Name": "output",
"Required": true,
"Type": 0
},
{
"Name": "metadata",
"Required": true,
"Type": 4,
"SubParameters": [
{
"Name": "score",
"Required": true,
"Type": 3
},
{
"Name": "dataset_id",
"Required": true,
"Type": 0
},
{
"Name": "segment_id",
"Required": true,
"Type": 0
},
{
"Name": "document_id",
"Required": true,
"Type": 0
},
{
"Name": "dataset_name",
"Required": true,
"Type": 0
},
{
"Name": "document_url",
"Type": 0
},
{
"Name": "document_name",
"Required": true,
"Type": 0
},
{
"Name": "document_type",
"Type": 1
},
{
"Name": "document_obs_url",
"Type": 0
},
{
"Name": "document_file_type",
"Type": 1
},
{
"Name": "orientations",
"Type": 9,
"SubParameters": [
{
"Name": "page_number",
"Required": true,
"Type": 1
},
{
"Name": "rects",
"Required": true,
"Type": 8
}
]
}
]
}
]
}
],
"TopK": 2,
"ScoreThreshold": 0.8,
"RerankID": null,
"RetrievalSearchMethod": 0,
"Expand": false,
"ExpandNum": null
}
},
{
"ID": "d064ac3sinkos4gco890",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:30:08Z",
"UpdatedAt": "2025-04-26T03:24:51Z",
"DeletedAt": null,
"Type": "Condition",
"Name": "选择器01",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 1712.5159218175,
"Y": 812.3698482021
},
"Depends": [
{
"NodeID": "d0644ljarp61nho5q6fg"
}
],
"ConditionConfig": {
"IfBranches": [
{
"ID": "if01",
"Conditions": [
{
"Left": {
"Type": "",
"Name": "Left",
"ValueFrom": {
"OutputRef": {
"NodeID": "d0644ljarp61nho5q6fg",
"OutputFieldPath": "知识库01.outputList[0].output"
}
}
},
"Operator": "EMPTY",
"Right": {
"Type": "Reference",
"Name": "Right"
}
}
],
"ConditionLogic": "AND"
}
],
"ElseBranch": {
"ID": "else"
}
}
},
{
"ID": "d064esbarp61nho63ti0",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:39:46Z",
"UpdatedAt": "2025-04-26T02:51:39Z",
"DeletedAt": null,
"Type": "Database",
"Name": "数据库01",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 2322.4203992907,
"Y": -495.0952127186
},
"Depends": [
{
"NodeID": "d064ac3sinkos4gco890",
"PortID": "if01"
}
],
"DatabaseConfig": {
"QueryVariable": {
"Type": "Reference",
"Name": "query",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063k8l5ipli2163fr40",
"OutputFieldPath": "翻译.raw_output"
}
}
},
"DatabaseID": "d0515a55ipli2161useg",
"ModelID": "d0452ubarp61nho36mog",
"Temperature": 0.7,
"TopP": 0.5,
"MaxTokens": 256,
"Prompt": "查找出全部相关联的信息",
"RetryTimes": 3,
"OutputSchema": [
{
"Name": "query_result",
"Required": true,
"Type": 0
},
{
"Name": "sql_statement",
"Required": true,
"Type": 0
}
]
}
},
{
"ID": "d064evbsinkokpn2m5l0",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:39:58Z",
"UpdatedAt": "2025-04-26T02:51:43Z",
"DeletedAt": null,
"Type": "Tool",
"Name": "插件01",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 2820.7814491916,
"Y": -495.9871742178
},
"Depends": [
{
"NodeID": "d064esbarp61nho63ti0"
}
],
"ToolConfig": {
"ToolID": "b6e3fae99o8kaosss71g",
"InputVariables": [
{
"Type": "Input",
"Name": "dsn",
"StringValue": "mysql://lanqiao:JRemizRCwKZqPAGvDmiV28Q@mysql38ab0bc01cc2.rds.ivolces.com/lqb_ss_books"
},
{
"Type": "Reference",
"Name": "query",
"ValueFrom": {
"OutputRef": {
"NodeID": "d064esbarp61nho63ti0",
"OutputFieldPath": "数据库01.sql_statement"
}
}
}
]
}
},
{
"ID": "d064hnrarp61nho669s0",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:45:51Z",
"UpdatedAt": "2025-04-26T02:51:48Z",
"DeletedAt": null,
"Type": "Condition",
"Name": "选择器02",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 3769.784816924,
"Y": -514.2159788184
},
"Depends": [
{
"NodeID": "d063sdrsinkm501djv10"
}
],
"ConditionConfig": {
"IfBranches": [
{
"ID": "if01",
"Conditions": [
{
"Left": {
"Type": "",
"Name": "Left",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063sdrsinkm501djv10",
"OutputFieldPath": "回答问题.raw_output"
}
}
},
"Operator": "IN",
"Right": {
"Type": "Input",
"Name": "Right",
"StringValue": "ABCD"
}
}
],
"ConditionLogic": "AND"
}
],
"ElseBranch": {
"ID": "else"
}
}
},
{
"ID": "d064ibjarp61nho66kgg",
"CreateUserID": 10023,
"UpdateUserID": 10023,
"CreatedAt": "2025-04-26T02:47:11Z",
"UpdatedAt": "2025-04-26T02:51:51Z",
"DeletedAt": null,
"Type": "LLM",
"Name": "大模型01",
"WorkflowID": "d063e13arp61nho53p70",
"LoopNodeID": "",
"Layout": {
"X": 3805.6825834079,
"Y": 729.1385102924
},
"Depends": [
{
"NodeID": "d063sdrsinkm501djv10"
}
],
"LLMConfig": {
"ModelID": "d0452ubarp61nho36mog",
"Temperature": 0.7,
"TopP": 0.5,
"MaxTokens": 256,
"InputVariables": [
{
"Type": "Reference",
"Name": "input",
"ValueFrom": {
"OutputRef": {
"NodeID": "d063e13arp61nho53p7g",
"OutputFieldPath": "Start.i"
}
}
}
],
"Prompt": "# 角色(Role)\n你是一个智能阅读助手,致力于帮助读者更好地进行阅读活动。\n\n# 限制(Constraint):\n当出现选择题时,题目可能是单选,也可能是多选,只输出选择序号即可,且只输出选择序号。多选题直接输出“AB,AC,BC,ABC”即可。",
"OutputFormat": "text",
"OutputSchema": [
{
"Name": "raw_output",
"Type": 0
}
]
}
}
]
}