【GPT调用】本地使用python调用GPT接口

news2024/12/24 8:37:54

python调用GPT接口

    • 环境变量设置
    • 主调用方法
    • 执行结果

环境变量设置

.env文件中配置GPT环境变量

api_key="你的GPT-API-KEY"
url=https://ai-proxy.ksord.com/wps.openai.azure.com/openai/deployments/gpt-4-32k/chat/completions?api-version=2023-09-01-preview

主调用方法

一般需要先安装load_dotenv库:

pip install load_dotenv

import requests
import os
from dotenv import load_dotenv

# 获取env文件中的环境变量
load_dotenv()

# 环境变量赋值
endpoint = os.getenv("url")
api_key = os.getenv("api_key")

# 封装GPT请求方法
def get_completion(messages, model="gpt-4-32k"):
    headers = {
        "Content-Type": "application/json",
        "api-key": api_key,
    }

    payload = {"model": model, "messages": messages, "temperature": 0.5, "top_p": 1, "frequency_penalty": 0, "presence_penalty": 0, "stop": None}
    response = requests.post(endpoint, headers=headers, json=payload, stream=True)
    try:
    	# 提取GPT返回的结果信息
        return response.json()["choices"][0]["message"]["content"]
    except Exception as e:
    	# 请求报错时,返回错误原因
        print(response.json())
        raise e

# 赋初值,也可设为空List
messages = [{"role": "system", "content": "You are a helpful assistant."}]

# 设置传入message值为input型
# 设置特殊指令break
# 打印返回结果
while True:
    message = input("User: ")
    if message.lower() in ("quit", "exit"):
        break

    messages.append({"role": "user", "content": message})
    anwser = get_completion(messages)

    print(f"Bot: {anwser}")
    messages.append({"role": "assistant", "content": anwser})

执行结果

在这里插入图片描述

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

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

相关文章

红帽为 Red Hat OpenShift AI 扩大与 Elasticsearch 向量数据库的合作

作者:来自 Elastic Aditya Tripathi 红帽和 Elastic 今天宣布开展合作,以便在 Red Hat OpenShift AI 上集成 Elasticsearch 向量数据库。 Red Hat OpenShift 用户现在可以通过红帽生态系统目录实施 Elasticsearch 以进行向量搜索和检索增强生成 (RAG) 应…

Blender动画与云渲染:创造高质量作品的未来路径

Blender作为开源的3D图形软件,在多个领域广受欢迎。但随着项目复杂度提升,传统渲染方式受限。云渲染技术的兴起突破了这些限制,为创作者提供了更自由、高效的创作环境。 一、Blender动画项目的挑战 传统上,Blender动画渲染需要依…

C++新手村指南:入门基础

目录 C概念 C发展史 C关键字(C98) 命名空间 命名空间的定义 命名空间的使用 C中的输入&&输出 缺省参数 缺省参数的概念 缺省参数的分类 函数重载 函数重载概念 函数重载实现 引用 引用的概念 引用的特性 常引用 引用的使用场景…

SpringBoot分页查询报错Bug

项目场景: 提示:这里简述项目相关背景: 使用pageHepler分页查询报错信息为 class java.util.ArrayList cannot be cast to class com.github.pagehelper.Page问题描述 提示:这里描述项目中遇到的问题: 实现条件分…

树莓派变小路由器放出热点wifi

环境 树莓派4Bubuntu20 作用 树莓派放出wifi后,笔记本电脑连接树莓派的wifi,并且ip配置在一个网段,就可以互相通信(笔记本放出wifi,树莓派连接效果一样),这样的好处是树莓派只要一上电就会自…

标准I/O库-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

标准I/O库 1、标准I/O库简介 什么是标准I/O库 标准C库当中用于文件I/O操作相关的一套库函数,使用标准I/O需要包含头文件 标准I/O和文件I/O之间的区别 标准I/O是库函数,而文件I/O是系统调用 标准I/O是对文件I/O的封装 可移植性:标准I/O相…

如何在Ubuntu 24.04或23.04中加密主文件夹

最新版本的 Ubuntu 强制加密整个磁盘,而不仅仅是一个分区,这意味着双系统用户无法完全加密他们的 Ubuntu 机器,因此加密你的Home 文件夹是最佳选择。 对于不熟悉磁盘加密的人来说,这是一种通过加密来保护 Ubuntu 文件的方法。这个…

Java基于Spring Boot框架的校园外卖服务系统设计与实现(附源码,说明文档)

博主介绍:✌IT徐师兄、7年大厂程序员经历。全网粉丝15W、csdn博客专家、掘金/华为云//InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇&#x1f3…

集成学习案例-幸福感预测

集成学习案例一 (幸福感预测) 背景介绍 此案例是一个数据挖掘类型的比赛——幸福感预测的baseline。比赛的数据使用的是官方的《中国综合社会调查(CGSS)》文件中的调查结果中的数据,其共包含有139个维度的特征&#xf…

HSL和RGB 互转的 原理 分析

定义 HSL即色相、饱和度、亮度(英语:Hue, Saturation, Lightness)。 色相(H)是色彩的基本属性,就是平常所说的颜色名称,如红色、黄色等。可以说和光谱对应。取值为0-360度。 …

java语言数据结构(单链表)

前言 不得承认java应用的广泛,所以毅然决定java版本的数据结构和算法专题还是要坚决更新。每日更新2题,希望学习的小伙伴可以关注一波跟上,评论区欢迎讨论交流。 实现原理 节点(Node):链表的基本构建单元…

Qt | QLineEdit 类(行编辑器)

01、上节回顾 Qt | QComboBox(组合框)02、QLineEdit 1、QLineEdit 类是 QWidget 类的直接子类,该类实现了一个单行的 输入部件,即行编辑器,见右图 2、验证器(QValidator 类)和输入掩码简介:主要作用是验证用户输入的字符是否符合验证器 的要求,即限制对用户的输入,比…

Windows环境编译MediaInfo源码详细过程

MediaInfo介绍 MediaInfo是一个自由开源的软件,它提供了一种方法来显示多媒体文件的详细信息,包括视频、音频和图像文件。 以下是关于MediaInfo的一些主要介绍: 功能:MediaInfo可以显示文件的格式、编码信息、长度、比特率、帧率…

Tomcat添加服务以及设置开机自启

下载地址连接 Index of /dist/tomcat👓 注意点:不要出现中文路径 #环境变量 CATALINA_HOMED:\apache-tomcat-7.0.62 TOMCAT_HOMED:\apache-tomcat-7.0.62 JAVA_HOMED:\tool\jdk1.8.0_111 PATH%CATALINA_HOME%\bin;%CATALINA_HOME%\lib;%CATALINA_HOME%\…

如何使用Vite快速构建vue项目

1、在自己定义的目录下打开cmd命令窗口:如文件夹目录上面输入cmd回车就可以打开 2、检查 node环境:通过node --version看版本号表示安装好了 3、 使用Vite 快速构建Vue项目 npm init vitelatest qiuqiu.admin 注意:如何你电脑没有装vite首…

C/C++常用的内置的宏定义

常用的C/C 内置宏 这是我在VS2015下运行的 cout << "file " << __FILE__ << endl;cout << "line " << __LINE__ << endl;cout << "date " << __DATE__ << endl;cout << "…

[公开课学习]台大李宏毅-自注意力机制 Transformer

自注意力机制 存在一些问题&#xff0c;将vector set/sequence作为input&#xff0c;例如&#xff1a; 文字处理&#xff1a;将文字用one-hot表示&#xff0c;或者向量空间的向量表示&#xff0c;然后进行翻译任务等语音处理&#xff1a;25ms音频作为一个向量&#xff0c;10m…

开源离线AI笔记应用

前言 Reor 是一款人工智能驱动的桌面笔记应用程序&#xff0c;它能自动链接相关笔记、回答笔记中的问题并提供语义搜索。所有内容都存储在本地&#xff0c;支持 Windows、Linux 和 MacOS。Reor 站在 Ollama、Transformers.js 和 LanceDB 等巨头的肩膀上&#xff0c;使 LLM 和嵌…

C# WCF服务(由于内部错误,服务器无法处理该请求。)

由于内部错误&#xff0c;服务器无法处理该请求。有关该错误的详细信息&#xff0c;请打开服务器上的 IncludeExceptionDetailInFaults (从 ServiceBehaviorAttribute 或从 <serviceDebug> 配置行为)以便将异常信息发送回客户端&#xff0c;或打开对每个 Microsoft .NET …

vue3创建响应式数据ref和reactive的区别

reactive和ref在Vue.js中都是用于创建响应式数据的&#xff0c;但它们之间存在一些区别 定义数据类型不同。ref主要用于定义基本数据类型&#xff0c;如字符串、数字、布尔值等&#xff1b;reactive主要用于定义对象&#xff08;或数组&#xff09;类型的数据&#xff0c;但re…