用纯OpenAI的API,实现手机流量包智能客服

import json
from openai import OpenAI
from dotenv import load_dotenv, find_dotenv
_ = load_dotenv(find_dotenv())


def print_json(data):
    """
    打印参数。如果参数是有结构的(如字典或列表),则以格式化的 JSON 形式打印;
    否则,直接打印该值。
    """
    if hasattr(data, 'model_dump_json'):
        data = json.loads(data.model_dump_json())

    if (isinstance(data, (list, dict))):
        print(json.dumps(
            data,
            indent=4,
            ensure_ascii=False
        ))
    else:
        print(data)


client = OpenAI()

# 定义消息历史。先加入 system 消息,里面放入对话内容以外的 prompt
messages = [
    {
        "role": "system",
        "content": """
你是一个手机流量套餐的客服代表,你叫小瓜。可以帮助用户选择最合适的流量套餐产品。可以选择的套餐包括:
经济套餐,月费50元,10G流量;
畅游套餐,月费180元,100G流量;
无限套餐,月费300元,1000G流量;
校园套餐,月费150元,200G流量,仅限在校生。
"""
    }
]


def get_completion(prompt, model="gpt-3.5-turbo"):

    # 把用户输入加入消息历史
    messages.append({"role": "user", "content": prompt})

    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=0,
    )
    msg = response.choices[0].message.content

    # 把模型生成的回复加入消息历史。很重要,否则下次调用模型时,模型不知道上下文
    messages.append({"role": "assistant", "content": msg})
    return msg


get_completion("有没有土豪套餐?")
get_completion("多少钱?")
get_completion("给我办一个")
# print(messages)
print_json(messages)

运行结果:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

容器化对数据库的性能有影响吗?

引言 容器化是一种将应用程序及其依赖项打包到一个独立、可移植的运行环境中的技术。容器化技术通过使用容器运行时引擎(比如Docker/Containerd)来创建、部署和管理容器。Kubernetes(通常简称为 k8s)是一个开源的容器编排和管理平…

谷粒商城【成神路】-【3】——三级分类

目录 🍿1.查询三级分类 🧂2.前端页面搭建 🍟3.添加网关 🍳4.解决跨域 🧇5.显示分类 🥞6.显示复选框 1.查询三级分类 1.controller 直接调用service层的接口 RequestMapping("/list/tree&qu…

多线程(进阶三:JUC)

一、Callable接口 二、reentrantLock 三、原子类 四、线程池 五、信号量 Semaphore 六、CountDownLatch JUC即java.utill.concurrent,里面放了一些多线程编程时有用的类,下面是里面的一些类。 一、Callable接口 1、创建线程的操作 多线程编程时&a…

day02.C++命名空间

目录 一、命名空间的作用 二、命名空间的定义 三、命名空间的镶嵌定义 四、命名空间的使用方法 一、命名空间的作用 一个中大型软件往往由多名程序员共同开发,会使用大量的变量和函数,不可避免地会出现变量或函数的命名冲突。当所有人的代码都测试通过…

将有逻辑关系的树形结构数组转换为扁平化的一维对象数组(包含PID、ID父子关系)(tree转换为List)

// 将有逻辑关系的树形结构数组转换为扁平化的一维对象数组 treeStructure2flatArray(arr) {let r [], r_ (ar, PID root) > ar.forEach(v > (v.children && (r_(v.children, v.ID), delete v.children), (v.PID PID, r.push(v))));r_(JSON.parse(JSON.strin…

LeetCode 热题 100 | 链表(中上)

目录 1 141. 环形链表 1.1 哈希表 1.2 快慢指针 2 142. 环形链表 II 2.1 哈希表 2.2 快慢指针 3 21. 合并两个有序链表 4 2. 两数相加 菜鸟做题第三周,语言是 C 1 141. 环形链表 1.1 哈希表 解题思路:遍历链表,在哈希表中…

用Audio2Face导出Unity面部动画

开始之前说句话,新年前最后一篇文章了 一定别轻易保存任何内容,尤其是程序员不要轻易Ctrl S 在A2F去往Unity的路上,还要经历特殊Blender,自己电脑中已下载好的可能不是很好使。 如果想查看UE相关的可以跳转到下边这两篇链接 1. …

追觅科技发布全折叠高速吹风机Pocket

2月2日,追觅科技召开2024新品发布会,一系列年度新品亮相。现场,追觅科技发布了个护重磅新品——追觅Pocket折叠高速吹风机,这也是行业首个全折叠高速吹风机。 创新柔性折叠技术,直卷吹一机全能 追觅Pocket折叠高速吹风…

Dash :一个超漂亮的 python Web库!

你好,Dash 是一个非常方便的 Python 库,它可以非常非常帮助你构建基于 Web 的应用程序,而且最棒的是你无需使用 JavaScript! 不仅如此,Dash 还是一个专门用于创建分析 Web 应用程序的用户界面库。 如果你是一个使用 …

沟通管理和相关方管理核心考点梳理

个人总结,仅供参考,欢迎加好友一起讨论 PMP - 沟通管理和相关方管理核心考点梳理 沟通管理和相关方(干系人)管理这两章放在一起进行梳理,这两章很多的考点很容易混淆,经常会纠结于一些题目,究竟…

三层架构思想

(一)回顾 面向对象设计原则: 各司其职(单一职责):每个Java对象的职责尽可能单一,每个Java对象只负责做某一件事,目的是为了简单化。 解耦合(开闭原则)&…

深度学习入门笔记(一)必备数学基础知识

本节中,我们先来介绍一些深度学习中必备的数学知识,有些是大学课堂讲过的,还有些可能没有,对于第一次见到的知识,可以先不用深究,了解概念即可,再后面应用的时候可以翻过头再看。 1.1 线性代数…

github请求超时解决方法

github请求超时解决办法 我使用windows执行如下git命令,提示超时 git clone xxxxx命令行提示如下: Failed to connect to github.com port 443: Timed out问题排查 可我Chrome可以正常访问github甚至ChatGPT,但是为什么在命令行里面却无法访问&#…

OpenAI 悄悄升级 ChatGPT;王腾:小米手机用户忠诚度安卓第一丨 RTE 开发者日报 Vol.140

开发者朋友们大家好: 这里是「RTE 开发者日报」,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE (Real Time Engagement) 领域内「有话题的新闻」、「有态度的观点」、「有意思的数据」、「有思考的文章」、「…

Java中的常用API

常用API Object类浅克隆与深克隆 ObjectsObjects中的equals 包装类StringBuilder和StringBufferStringBuilder是可变字符串对象StringBuffer线程安全案例![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/87649c20e6464113a42aee5f16f1ee22.png) StringJoiner Object…

鸿蒙harmony--自定义组件

今天是2月1日,星期四,二月的第一条祝福送给你,愿你目之所及皆是欢喜,心之所想皆能如愿,希望在新的一年里,我们都能越来越好。 目录 一,定义 二,自定义组件的基本用法 三,…

生产问题排查系列——未知404状态接口请求

引言 我们的产品主打金融服务领域,以B端客户为我们的核心合作伙伴,然而,我们的服务最终将惠及C端消费者。在技术实现上,我们采用了公司自主研发的微服务框架,该框架基于SpringBoot,旨在提供高效、可靠的服…

【FPGA VerilogModelsim】 8bitBCD码60计数器

可私信获取整个项目文件 8bit 即有8位二进制 BCD码 ,全称Binary-Coded Decimal,简称BCD码或者二-十进制代码 利用四位二进制(0000-1111)16个中选择10个作为十进制0-9; 常见的BCD码是8421码 本项目使用两组BCD码(每组4bit,共8bit,故称为8bitBCD)(高位0-5,低位0-9…

【Java网络编程04】网络原理进阶(二)

1. 前言 在网络原理进阶(一)部分我们详细介绍了UDP/TCP两大协议及其相关特性,本章我们会讨论网络层、数据链路层、物理层相关协议。但是需要注意的是,如果有小伙伴们未来是想成为Java后端开发工程师的,那么未来工作中…

随着网络的快速发展,网络安全问题也日益凸显,遇到攻击该如何处理,如何抉择合适的防护方案

DexunCloud 经过研究发现当今世界,随着网络的快速发展,网络安全问题也日益凸显。其中,DDoS(分布式拒绝服务)攻击被认为是网络安全领域里最为严重的威胁之一。毫无疑问,DDoS攻击不仅可以导致网络服务中断&am…