【大模型从入门到精通12】openAI API 提示链的力量3

news2024/9/24 17:09:49

这里写目录标题

        • 实践问题
      • 实践部分
      • 场景概述
        • 场景步骤
          • 初始产品询问
          • 故障排除请求
          • 保修问题
          • 额外产品推荐
        • 示例实现

在这里插入图片描述

实践问题
  • 编写一个名为retrieve_model_response的Python函数,该函数接受一个消息序列作为输入,并根据给定参数返回模型的响应。包括模型、温度和最大令牌数的参数。
  • 展示如何使用retrieve_model_response函数与系统指令和用户查询一起提取客户服务查询中的相关信息。
  • 创建一个样本产品数据库,并编写函数来通过名称获取产品细节和获取特定类别下的所有产品。
  • 展示如何将JSON字符串转换为Python列表以进一步处理,包括处理无效JSON字符串的错误处理。
  • 编写一个名为generate_response_from_data的函数,该函数将产品数据列表格式化为用户友好的响应字符串。
  • 使用描述的功能和方法,概述一个综合的客户服务互动场景,该场景处理初次产品询问、处理故障排除请求、回答保修问题,并提供额外的产品推荐。

实践部分

import openai

def retrieve_model_response(message_sequence, model="gpt-3.5-turbo", temperature=0, max_tokens=500):
    response = openai.ChatCompletion.create(
        model=model,
        messages=message_sequence,
        temperature=temperature, 
        max_tokens=max_tokens, 
    )
    return response.choices[0].message["content"]

# 系统消息定义任务结构和预期响应格式
system_instruction = """
您将收到客户服务查询。查询将以 '####' 进行分隔。
输出一个Python对象列表,每个对象代表查询中提到的产品或类别。
"""

# 用户询问特定产品和类别的示例
user_query = "#### 请告诉我关于 SmartX ProPhone 和 FotoSnap DSLR 相机的信息,还有你们的电视。####"

# 为模型准备消息序列
message_sequence = [  
    {'role': 'system', 'content': system_instruction},    
    {'role': 'user', 'content': user_query},  
]

# 使用函数获取模型的响应
extracted_info = retrieve_model_response(message_sequence)
print(extracted_info)

# 示例产品数据库
product_database = {
    "SmartX ProPhone": {
        "name": "SmartX ProPhone",
        "category": "智能手机及配件",
        # 其他产品详情...
    },
    "FotoSnap DSLR Camera": {
        "name": "FotoSnap DSLR Camera",
        "category": "相机与摄影",
        # 其他产品详情...
    },
    "UltraView HD TV": {
        "name": "UltraView HD TV",
        "category": "电视机",
        # 其他产品详情...
    },
    # 其他产品...
}

# 通过名称获取产品信息的函数
def get_product_details_by_name(product_name):
    return product_database.get(product_name, "找不到该产品。")

# 获取特定类别下所有产品的函数
def get_products_in_category(category_name):
    return [product for product_name, product in product_database.items() if product["category"] == category_name]

# 示例使用
print(get_product_details_by_name("SmartX ProPhone"))
print(get_products_in_category("智能手机及配件"))

import json

def json_string_to_python_list(json_string):
    try:
        return json.loads(json_string)
    except json.JSONDecodeError as e:
        print(f"JSON解码错误: {e}")
        return None

# 示例 JSON 字符串
json_input = '[{"category": "智能手机及配件", "products": ["SmartX ProPhone"]}]'

# 转换并打印 Python 列表
python_list = json_string_to_python_list(json_input)
print(python_list)

def generate_response_from_data(product_data_list):
    if not product_data_list:
        return "我们未能找到符合您查询的任何产品。"

    response_string = ""
    for product_data in product_data_list:
        response_string += f"产品名称: {product_data['name']}\n"
        response_string += f"类别: {product_data['category']}\n"
        response_string += "\n"  # 在产品之间添加换行符以留空行

    return response_string

# 假设 python_list 是之前从 JSON 转换到 Python 列表的输出
python_list = [{'category': '智能手机及配件', 'products': ['SmartX ProPhone']}]
final_response = generate_response_from_data(python_list)
print(final_response)

场景概述

让我们概述一个场景,其中客户服务 AI 处理初始的产品询问、处理故障排除请求、回答保修问题,并提供额外的产品推荐。这个场景建立在上述功能之上。

场景步骤
初始产品询问
  • 用户询问:“我对升级我的智能手机感兴趣。你能告诉我关于最新款手机的信息吗?”
  • AI 处理:AI 使用 retrieve_model_response 提取查询中的相关产品名称,然后使用 get_product_details_by_name 获取这些产品的详细信息。
  • AI 响应:AI 使用 generate_response_from_data 格式化这些信息,并响应有关最新智能手机型号的详情。
故障排除请求
  • 用户询问:“我刚买了 SmartX ProPhone,但是我遇到了电池续航的问题。我应该怎么办?”
  • AI 处理:AI 识别产品和问题,然后咨询故障排除数据库或指南,提供具体的建议。
  • AI 响应:详细的故障排除步骤,以改善电池寿命或下一步保修服务的指引。
保修问题
  • 用户询问:“SmartX ProPhone 的保修涵盖什么内容?”
  • AI 处理:AI 从数据库中检索特定于 SmartX ProPhone 的保修信息。
  • AI 响应:保修覆盖内容的总结,包括保修期限和覆盖的问题。
额外产品推荐
  • 用户询问:“你有什么配件推荐给我这款手机吗?”
  • AI 处理:基于产品信息,AI 使用 get_products_in_category 获取兼容的配件列表。
  • AI 响应:AI 推荐配件如保护壳、屏幕保护膜和无线充电器,并使用 generate_response_from_data 格式化为易于理解的形式。
示例实现

假设上面提到的所有函数都已经定义好了。

  • 步骤 1:初始产品询问处理

    • 产品询问:“我对升级我的智能手机感兴趣。你能告诉我关于最新款手机的信息吗?”
    • 这里,你会模拟提取相关产品信息并相应地作出回应。
  • 步骤 2:故障排除请求处理

    • 故障排除请求:“我刚买了 SmartX ProPhone,但是我遇到了电池续航的问题。我应该怎么办?”
    • 处理请求,识别常见问题和解决方案以改善 SmartX ProPhone 的电池寿命。
  • 步骤 3:保修问题处理

    • 保修问题:“SmartX ProPhone 的保修涵盖什么内容?”
    • 检索并响应有关 SmartX ProPhone 的具体保修信息。
  • 步骤 4:额外产品推荐

    • 配件询问:“你有什么配件推荐给我这款手机吗?”
    • 识别并推荐与 SmartX ProPhone 兼容的配件。
  • 每个步骤涉及使用定义好的函数来处理用户的询问,并生成有信息量、有帮助的响应。

这个场景展示了通过一系列互动提供的综合客户服务。每个步骤都需要特定的 AI 处理来理解询问、检索相关数据,并将这些信息格式化为清晰的响应。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1993272.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何去掉el-input自带边框

<style lang"scss" scoped>::v-deep .inputDeep .el-input__inner {border: none !important;box-shadow: none !important;padding: 0px; }</style> //先定义一个类名 <el-input v-model"form.name" class"inputDeep"><…

7.3.1.算法设计与分析-总结及真题讲解

总结 分治法特征&#xff1a;把一个问题拆分成多个小规模的相同子问题&#xff0c;一般可用递归解决。 经典问题&#xff1a;斐波那契数列、归并排序、快速排序、矩阵乘法、二分搜索、大整数乘法、汉诺塔 回溯法特征&#xff1a;系统的搜索一个问题的所有解或任一解。 经典问题…

10个理由告诉你,为什么鸿蒙是下一个职业风口!

在当今科技飞速发展的时代&#xff0c;新的技术和趋势不断涌现&#xff0c;为人们带来了前所未有的机遇和挑战。鸿蒙操作系统作为我国自主研发的创新成果&#xff0c;正逐渐成为科技领域的焦点&#xff0c;被认为是下一个职业风口。 10个理由告诉你&#xff0c;为什么鸿蒙是下一…

C++(week15): C++提高:(五)Redis数据库

文章目录 零、Redis的安装、API1.redis、hiredis、redis-plus-plus安装2.HiRedis的API 一、Redis数据库的基本概念1.关系型数据库与非关系型数据库的区别2.非关系型数据库的分离3.Redis的概念4.Redis的特性5.Redis的优点 二、Redis常用命令三、Redis的五大数据类型及其命令1.st…

清除 Nuxt 状态缓存:clearNuxtState

title: 清除 Nuxt 状态缓存&#xff1a;clearNuxtState date: 2024/8/7 updated: 2024/8/7 author: cmdragon excerpt: 摘要&#xff1a;本文介绍了Nuxt.js框架中clearNuxtState方法的使用&#xff0c;该方法用于清除useState管理的状态缓存&#xff0c;确保应用状态的有效性…

Apache POI 实现 Excel 表格下载

这里以苍穹外卖中数据导出功能为例&#xff0c;记录下 Apache POI 导出 Excel 表格的过程。 首先在 pom.xml 中导入相关依赖 <!-- poi 用于操作 excel 表格--> <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId&…

详细LVS实验配置

一、LVS的NAT模式 1、实验环境 主机名ipVIP角色lvs192.168.0.100172.25.254.100调度器webserver1192.168.0.10&#xff0c;网关192.168.0.100null 真实服务器&#xff08; RS &#xff09; webserver2192.168.0.20&#xff0c;网关192.168.0.100null 真实服务器&#xff08; R…

【C语言初阶】C语言操作符全攻略:提升编程效率的关键步骤

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ ⏩收录专栏⏪&#xff1a;C语言 “ 登神长阶 ” &#x1f921;往期回顾&#x1f921;&#xff1a;C语言数组 &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀操作符 &#x1f4d2;1. 算术操作…

从0开始搭建vue + flask 旅游景点数据分析系统( 八):美化前端可视化图形

这一期来美化我们仅有的三个可视化图形&#xff08;可怜&#xff09;&#xff0c;毕竟&#xff0c;帅是一辈子的事。 1 折线图改面积图&#xff08;渐变色&#xff09; 需求&#xff1a;折线图改为蓝色的面积图&#xff0c;并且有一点的渐变色。 这个非常简单&#xff0c;只…

提升效率神器!2024年Windows平台录屏工具

现在生活中经常会用到录屏工具&#xff0c;比如会议记录、比如课程教学、比如游戏瞬间等等。如何选择一款适合WIN10录屏的工具就值得我们研究一下。 1.福昕REC大师 链接直达&#xff1a;https://www.foxitsoftware.cn/REC/ 这款软件的界面设计极其简约直观&#xff0c;一眼…

代码随想录第二十三天|动态规划(7)

目录 LeetCode 188. 买卖股票的最佳时机 IV LeetCode 309. 买卖股票的最佳时机含冷冻期 LeetCode 714. 买卖股票的最佳时机含手续费。 总结 LeetCode 188. 买卖股票的最佳时机 IV 题目链接&#xff1a;LeetCode 188. 买卖股票的最佳时机 IV 思想&#xff1a;本题跟之前的…

Kevin De Rug VoxEdit 竞赛来了!

让 Kevin de Rug 再现&#xff0c;去世界的某个地方冒险。 让你的创造力更上一层楼。以 Pixelmon 的 Kevin de Rug 为主题&#xff0c;在这场精彩的 VoxEdit 竞赛中释放你惊人的体素技能。 主题&#xff1a;让 Kevin de Rug 再现&#xff0c;去世界的某个地方冒险。 Kevin 被…

Linux系统驱动(十一)GPIO子系统

文章目录 一、GPIO子系统&#xff08;一&#xff09;框架结构&#xff08;二&#xff09;GPIO子系统的API&#xff08;三&#xff09;gpio子系统控制LED灯的设备树1. 画出硬件连接图2. 找出控制器的设备树3. 参考内核帮助文档 二、使用GPIO子系统实现流水灯1. 设备树文件&#…

Win11解压文件Cpu占用率过高?解决方法在此!

在Win11电脑操作中&#xff0c;用户遇到解压文件时CPU占有率过高的问题&#xff0c;不知道要如何操作才能解决该问题&#xff1f;接下来系统之家小编给大家分享几种不同的解决方法&#xff0c;帮助大家轻松解决问题&#xff0c;降低Win11电脑CPU占有率&#xff0c;提升Win11电脑…

记一次框架升级

背景 随着公司业务的不断扩展&#xff0c;新技术的更新换代&#xff0c;企业内部免不了会对软硬件进行升级&#xff0c;淘汰老旧的组件和实现方案&#xff0c;更新一波技术栈。这不&#xff0c;最近我们公司就面临这么一个难题&#xff1a;旧版本的组件上发现漏洞&#xff0c;为…

Fiddler代理后浏览器无法上网啥情况

当使用Fiddler作为代理服务器后&#xff0c;浏览器无法上网的情况通常是由以下几个原因造成的&#xff1a; 代理服务器配置不正确&#xff1a; 确保在浏览器或其他客户端中正确配置了Fiddler作为代理服务器。代理服务器地址应为运行Fiddler的计算机的局域网IP地址&#xff0c;端…

【Canvas与艺术】黄色立体感放射光芒五角星

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>黄色立体感放射光芒五角星</title><style type"text/c…

黄金走势分析及经济前景展望

黄金市场动态 近期&#xff0c;全球经济不确定性加剧&#xff0c;使得黄金市场备受关注。美国国债收益率的上涨进一步支撑了美元&#xff0c;推动黄金价格进入高位震荡阶段。尽管黄金在短期内受到波动的影响&#xff0c;但长期避险资产的吸引力仍不容忽视。 经济数据与黄金走势…

Spring---AOP(面向切面编程)

AOP(Aspect-Oriented Programming: 面向切面编程)&#xff1a;将那些与业务无关&#xff0c;却为业务模块所共调用的逻辑&#xff08;例如事务处理、日志管理、权限控制等&#xff09;封装抽取成一个可重用的模块&#xff0c;这个模块被命名为“切面”&#xff08;Aspect&#…

Promethues Metrics

Metrics Metrics可分为三部分&#xff1a; HELP 描述metric作用TYPE metric类别 TYEP Counter 某个事件发生的次数数字只能增长 Total reuqests Total ExceptionsGauge 描述当前值可以上升或下降 CurrentCPU Utilization Available System Memory Number of concurren…