面向开发者的LLM入门课程-端到端问答系统英文版: 英文版 1.端到端问答系统 import utils_en import openai def process_user_message(user_input, all_messages, debug……
哈喽!伙伴们,我是小智,你们的AI向导。欢迎来到每日的AI学习时间。今天,我们将一起深入AI的奇妙世界,探索“面向开发者的LLM入门课程-端到端问答系统英文版”,并学会本篇文章中所讲的全部知识点。还是那句话“不必远征未知,只需唤醒你的潜能!”跟着小智的步伐,我们终将学有所成,学以致用,并发现自身的更多可能性。话不多说,现在就让我们开始这场激发潜能的AI学习之旅吧。
面向开发者的LLM入门课程-端到端问答系统英文版:
英文版
1.端到端问答系统
import utils_en
import openai
def process_user_message(user_input, all_messages, debug=True):
“””
对用户信息进行预处理
参数:
user_input : 用户输入
all_messages : 历史信息
debug : 是否开启 DEBUG 模式,默认开启
“””
# 分隔符
delimiter = ““`”
# 第一步: 使用 OpenAI 的 Moderation API 检查用户输入是否合规或者是一个注入的 Prompt
response = openai.Moderation.create(input=user_input)
moderation_output = response[“results”][0]
# 经过 Moderation API 检查该输入不合规
if moderation_output[“flagged”]:
print(“第一步:输入被 Moderation 拒绝”)
return “抱歉,您的请求不合规”
# 如果开启了 DEBUG 模式,打印实时进度
if debug: print(“第一步:输入通过 Moderation 检查”)
# 第二步:抽取出商品和对应的目录,类似于之前课程中的方法,做了一个封装
category_and_product_response =
utils_en.find_category_and_product_only(user_input,
utils_en.get_products_and_category())
#print(category_and_product_response)
# 将抽取出来的字符串转化为列表
category_and_product_list =
utils_en.read_string_to_list(category_and_product_response)
#print(category_and_product_list)
if debug: print(“第二步:抽取出商品列表”)
# 第三步:查找商品对应信息
product_information =
utils_en.generate_output_string(category_and_product_list)
if debug: print(“第三步:查找抽取出的商品信息”)
# 第四步:根据信息生成回答
system_message = f”””
You are a customer service assistant for a large electronic store.
Respond in a friendly and helpful tone, with concise answers.
Make sure to ask the user relevant follow-up questions.
“””
# 插入 message
messages = [
{‘role’: ‘system’, ‘content’: system_message},
{‘role’: ‘user’, ‘content’: f”{delimiter}{user_input}{delimiter}”},
{‘role’: ‘assistant’, ‘content’: f”Relevant product
information:n{product_information}”}
]
# 获取 GPT3.5 的回答
# 通过附加 all_messages 实现多轮对话
final_response = get_completion_from_messages(all_messages + messages)
if debug:print(“第四步:生成用户回答”)
# 将该轮信息加入到历史信息中
all_messages = all_messages + messages[1:]
# 第五步:基于 Moderation API 检查输出是否合规
response = openai.Moderation.create(input=final_response)
moderation_output = response[“results”][0]
# 输出不合规
if moderation_output[“flagged”]:
if debug: print(“第五步:输出被 Moderation 拒绝”)
return “抱歉,我们不能提供该信息”
if debug: print(“第五步:输出经过 Moderation 检查”)
# 第六步:模型检查是否很好地回答了用户问题
user_message = f”””
Customer message: {delimiter}{user_input}{delimiter}
Agent response: {delimiter}{final_response}{delimiter}
Does the response sufficiently answer the question?
“””
messages = [
{‘role’: ‘system’, ‘content’: system_message},
{‘role’: ‘user’, ‘content’: user_message}
]
# 要求模型评估回答
evaluation_response = get_completion_from_messages(messages)
if debug: print(“第六步:模型评估该回答”)
# 第七步:如果评估为 Y,输出回答;如果评估为 N,反馈将由人工修正答案
if “Y” in evaluation_response: # 使用 in 来避免模型可能生成 Yes
if debug: print(“第七步:模型赞同了该回答.”)
return final_response, all_messages
else:
if debug: print(“第七步:模型不赞成该回答.”)
neg_str = “很抱歉,我无法提供您所需的信息。我将为您转接到一位人工客服代表以获取进一步
帮助。”
return neg_str, all_messages
user_input = “tell me about the smartx pro phone and the fotosnap camera, the
dslr one. Also what tell me about your tvs”
response,_ = process_user_message(user_input,[])
print(response)
第一步:输入通过 Moderation 检查
第二步:抽取出商品列表
第三步:查找抽取出的商品信息
第四步:生成用户回答
第五步:输出经过 Moderation 检查
第六步:模型评估该回答
第七步:模型赞同了该回答.
Sure! Here’s some information about the SmartX ProPhone and the FotoSnap DSLR
Camera:
1. SmartX ProPhone:
– Brand: SmartX
– Model Number: SX-PP10
– Features: 6.1-inch display, 128GB storage, 12MP dual camera, 5G connectivity
– Description: A powerful smartphone with advanced camera features.
– Price: $899.99
– Warranty: 1 year
2. FotoSnap DSLR Camera:
– Brand: FotoSnap
– Model Number: FS-DSLR200
– Features: 24.2MP sensor, 1080p video, 3-inch LCD, interchangeable lenses
– Description: Capture stunning photos and videos with this versatile DSLR
camera.
– Price: $599.99
– Warranty: 1 year
Now, could you please let me know which specific TV models you are interested in?
2.持续收集用户和助手信息
def collect_messages_en(debug=False):
“””
用于收集用户的输入并生成助手的回答
参数:
debug: 用于觉得是否开启调试模式
“””
user_input = inp.value_input
if debug: print(f”User Input = {user_input}”)
if user_input == “”:
return
inp.value = ”
global context
# 调用 process_user_message 函数
#response, context = process_user_message(user_input, context,
utils.get_products_and_category(),debug=True)
response, context = process_user_message(user_input, context, debug=False)
context.append({‘role’:’assistant’, ‘content’:f”{response}”})
panels.append(
pn.Row(‘User:’, pn.pane.Markdown(user_input, width=600)))
panels.append(
pn.Row(‘Assistant:’, pn.pane.Markdown(response, width=600, style=
{‘background-color’: ‘#F6F6F6’})))
return pn.Column(*panels) # 包含了所有的对话信息
嘿,伙伴们,今天我们的AI探索之旅已经圆满结束。关于“面向开发者的LLM入门课程-端到端问答系统英文版”的内容已经分享给大家了。感谢你们的陪伴,希望这次旅程让你对AI能够更了解、更喜欢。谨记,精准提问是解锁AI潜能的钥匙哦!如果有小伙伴想要了解学习更多的AI知识,请关注我们的官网“AI智研社”,保证让你收获满满呦!
还没有评论呢,快来抢沙发~