Windows 通过代理服务器调用 openai 的 api

1. 查看网络是否联通

通过代理访问一个 HTTPS 网站来验证代理服务器是否工作正常

curl -x socks5h://127.0.0.1:1080 https://www.google.com

2. curl 访问openai的api

curl -x socks5h://127.0.0.1:1080 -s https://api.openai.com/v1/models/gpt-3.5-turbo  
-H "Authorization: Bearer $OPENAI_API_KEY"

结果:

{"id": "gpt-3.5-turbo","object": "model","created": 1677610602,"owned_by": "openai"
}

再次访问:

curl -k -x socks5h://127.0.0.1:1080 -X POST https://api.openai.com/v1/chat/completions ^
-H "Content-Type: application/json" ^
-H "Authorization: Bearer $OPENAI_API_KEY" ^
-d "{\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"Translate the following English text to French: 'Hello, world!'\"}],\"max_tokens\":100}"

其中:

  • -x http://proxy.example.com:8080:指定代理服务器及其端口。
  • -X POST:指定请求方法为 POST。
  • https://api.openai.com/v1/chat/completions:目标 API 的 URL。
  • -H “Content-Type: application/json”:指定请求头,表明发送的数据类型为 JSON。
  • -H “Authorization: Bearer YOUR_API_KEY”:指定请求头,包含你的 API 密钥。
  • -d “{“model”:“gpt-3.5-turbo”,“messages”:[{“role”:“user”,“content”:“Translate the following English text to French: ‘Hello, world!’”}],“max_tokens”:100}”:发送的数据,包含一个 JSON 对象。

特别注意:在 Windows 命令行中,双引号内的双引号需要用反斜杠转义。

3. python访问OpenAI的api

python 访问代码:

import openai
import os
import httpx
import time# 设置你的 OpenAI API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")# 设置代理服务器
proxy_url = 'socks5://127.0.0.1:1080'# 创建一个 HTTPX 客户端并配置代理
client = httpx.Client(proxies={"http://": proxy_url,"https://": proxy_url,
})# 自定义发送请求的函数
def list_models(max_retries=10, retry_delay=5):url = "https://api.openai.com/v1/models"headers = {"Authorization": f"Bearer {openai.api_key}"}for attempt in range(max_retries):try:response = client.get(url, headers=headers)response.raise_for_status()  # 如果请求失败,抛出异常return response.json()except httpx.HTTPStatusError as e:if e.response.status_code == 429:print(f"Received 429 Too Many Requests. Retrying in {retry_delay} seconds...")time.sleep(retry_delay)retry_delay *= 2  # 指数退避策略:等待时间加倍else:raise eraise Exception("Max retries exceeded")def print_models(models_response):print("Available Models:")print("=================")for model in models_response['data']:model_id = model.get('id', 'N/A')created_at = model.get('created', 'N/A')owned_by = model.get('owned_by', 'N/A')print(f"Model ID: {model_id}")print(f"Created At: {created_at}")print(f"Owned By: {owned_by}")print("-----------------")# 列出模型并打印结果
models_response = list_models()
print_models(models_response)

输出结果:

Available Models:
=================
Model ID: whisper-1
Created At: 1677532384
Owned By: openai-internal
-----------------
Model ID: babbage-002
Created At: 1692634615
Owned By: system
-----------------
Model ID: dall-e-2
Created At: 1698798177
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-16k
Created At: 1683758102
Owned By: openai-internal
-----------------
Model ID: tts-1-hd-1106
Created At: 1699053533
Owned By: system
-----------------
Model ID: tts-1-hd
Created At: 1699046015
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-instruct-0914
Created At: 1694122472
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-instruct
Created At: 1692901427
Owned By: system
-----------------
Model ID: dall-e-3
Created At: 1698785189
Owned By: system
-----------------
Model ID: text-embedding-3-small
Created At: 1705948997
Owned By: system
-----------------
Model ID: tts-1
Created At: 1681940951
Owned By: openai-internal
-----------------
Model ID: text-embedding-3-large
Created At: 1705953180
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-0125
Created At: 1706048358
Owned By: system
-----------------
Model ID: gpt-3.5-turbo
Created At: 1677610602
Owned By: openai
-----------------
Model ID: gpt-3.5-turbo-0301
Created At: 1677649963
Owned By: openai
-----------------
Model ID: tts-1-1106
Created At: 1699053241
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-16k-0613
Created At: 1685474247
Owned By: openai
-----------------
Model ID: gpt-3.5-turbo-0613
Created At: 1686587434
Owned By: openai
-----------------
Model ID: text-embedding-ada-002
Created At: 1671217299
Owned By: openai-internal
-----------------
Model ID: davinci-002
Created At: 1692634301
Owned By: system
-----------------
Model ID: gpt-3.5-turbo-1106
Created At: 1698959748
Owned By: system
-----------------

最后一个模型用 curl 验证:

$ curl -x socks5h://127.0.0.1:1080 -s https://api.openai.com/v1/models/gpt-3.5-turbo-1106  -H "Authorization: Bearer $OPENAI_API_KEY"
{"id": "gpt-3.5-turbo-1106","object": "model","created": 1698959748,"owned_by": "system"
}

检索特定的模型 gpt-3.5-turbo-1106

import openai
import os
import httpx# 设置你的 OpenAI API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")# 设置代理服务器
proxy_url = 'socks5://127.0.0.1:1080'# 创建一个 HTTPX 客户端并配置代理
client = httpx.Client(proxies={"http://": proxy_url,"https://": proxy_url,
})# 自定义发送请求的函数以检索模型信息
def retrieve_model(model_id, max_retries=10, retry_delay=5):url = f"https://api.openai.com/v1/models/{model_id}"headers = {"Authorization": f"Bearer {openai.api_key}"}for attempt in range(max_retries):try:response = client.get(url, headers=headers)response.raise_for_status()  # 如果请求失败,抛出异常return response.json()except httpx.HTTPStatusError as e:if e.response.status_code == 429:print(f"Received 429 Too Many Requests. Retrying in {retry_delay} seconds...")time.sleep(retry_delay)retry_delay *= 2  # 指数退避策略:等待时间加倍else:raise eraise Exception("Max retries exceeded")# 检索 gpt-3.5-turbo 模型的信息
model_id = "gpt-3.5-turbo-1106"
model_info = retrieve_model(model_id)# 输出模型信息
print(f"Model ID: {model_info.get('id', 'N/A')}")
print(f"Object: {model_info.get('object', 'N/A')}")
print(f"Created At: {model_info.get('created', 'N/A')}")
print(f"Owned By: {model_info.get('owned_by', 'N/A')}")

运行结果:

Model ID: gpt-3.5-turbo-1106
Object: model
Created At: 1698959748
Owned By: system

还有代码:

import openai
import os
import httpx
import time# 设置你的 OpenAI API 密钥
openai.api_key = os.getenv("OPENAI_API_KEY")# 设置代理服务器
proxy_url = 'socks5://127.0.0.1:1080'# 创建一个 HTTPX 客户端并配置代理
client = httpx.Client(proxies={"http://": proxy_url,"https://": proxy_url,
})# 自定义发送请求的函数
def create_chat_completion(messages, max_retries=10, retry_delay=10):url = "https://api.openai.com/v1/chat/completions"headers = {"Content-Type": "application/json","Authorization": f"Bearer {openai.api_key}"}payload = {"model": "gpt-3.5-turbo","messages": messages}for attempt in range(max_retries):try:response = client.post(url, headers=headers, json=payload)response.raise_for_status()  # 如果请求失败,抛出异常return response.json()except httpx.HTTPStatusError as e:if e.response.status_code == 429:print(f"Received 429 Too Many Requests. Retrying in {retry_delay} seconds...")time.sleep(retry_delay)else:raise eraise Exception("Max retries exceeded")# 测试请求
messages = [{"role": "user", "content": "Translate the following English text to French: 'Hello, world!'"}
]
response = create_chat_completion(messages)# 输出响应
print(response['choices'][0]['message']['content'])

参考:

  1. Open Ai 常见接口参数说明以及常见报错总结

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

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

相关文章

Java面试题:Redis分片集群结构

分片集群结构 Redis存在以下两个问题 海量数据的存储问题 高并发写的问题 分片集群特征 集群中有多个master,每个master保存不同数据 每个master都可以有多个slave节点 master之间通过ping监测彼此的健康状态 客户端请求可以访问集群的任意节点,最终会被转发到正确的节…

整理好了!2024年最常见 20 道设计模式面试题(二)

上一篇地址:整理好了!2024年最常见 20 道设计模式面试题(一)-CSDN博客 三、解释工厂方法模式和抽象工厂模式的区别。 工厂方法模式和抽象工厂模式都是创建型设计模式,它们用于创建对象,但它们在应用场景和…

Avalonia for VSCode

1、在VSCode中编辑AvaloniaUI界面,在VSCode中搜索Avalonia,并安装。如下图,可以发现Avalonia for VSCode还是预览版。 2、 创建一个Avalonia 项目。 选择项目类型 输入项目名称 选择项目所在文件夹 打开项目 3、项目架构如下图。 4、builde…

WPF 布局控件 Grid表格

介绍 Grid表格布局控件,在WPF项目的界面布局中非常常用。主要是以行列进行元素控制的。 常用的属性 Grid.Row: 指定子元素所在的行。 Grid.Column: 指定子元素所在的列。 Grid.RowSpan 跨几行 Grid.ColumnSpan 跨几列 RowSpacing:…

敏捷测试:方法和实践

敏捷测试:方法和实践 前言1. 敏捷团队组织构成与任务2. 测试驱动开发(TDD)3. 递增型迭代测试模型4. 静态测试的重要性5. 测试计划与管理6. 敏捷测试活动时间表结论 前言 敏捷测试的实践是将敏捷开发原则和方法运用到测试过程中,以…

ICBINP - “I Can‘t Believe It‘s Not Photography“

ICBINP - “I Can’t Believe It’s Not Photography” 推荐设置: DPM 3M SDE Karras or DPM 2M Karras, 20-30 steps, 2.5-5 CFG (or use Dynamic Thresholding), happiest at 640x960 with a hires fix on top, but if you are happy to hunt through seeds to a…

汇聚荣拼多多运营策略是怎么样的?

拼多多作为中国领先的电商平台,其运营策略一直备受关注。拼多多的成功不仅在于其创新的“社交电商”模式,更在于其精细化的市场定位和高效的用户增长策略。本文将深入分析拼多多的运营策略,探讨其如何在激烈的电商竞争中突围而出。 一、用户增…

基于Java的度分秒坐标转纯经纬度坐标的漂亮国基地信息管理

目录 前言 一、空间表设计 1、物理表结构 二、后台数据管理 1、数据去重 2、去重的具体实现 3、度分秒数据格式转换 4、具体的转换方法 5、新增界面的实现 三、数据管理界面 总结 前言 众所周知,漂亮国在全球范围内部署了大量的基地,用以维持其…

Unity OpenCVForUnity 安装和第一个案例详解 <一>

目录 一、资源简介 二、安装使用 1.下载案例Demo 2.移动StreamingAssets文件夹 3.添加场景 三、今日案例 1.案例Texture2DToMat Example 2.什么是Mat? 3.如何把Texture2D变成Mat (1).初始化Mat (2).Cv_…

React如何配置路由

ReactTs配置路由 安装依赖 npm i react-router-dom在routers下面创建index.tsx import { RouteObject } from react-router-dom import React from react import PageA from /views/PageA import PageB from /views/PageB const routes: RouteObject[] [{path: /,element: …

Bagging与Boosting的应用与优势

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

【最全面最优质的PyTorch学习资源】

纯 PyTorch 资源 PyTorch 博客 https://pytorch.org/blog/ PyTorch 文档 https://pytorch.org/docs PyTorch 性能调优指南 https://pytorch.org/tutorials/recipes/recipes/tuning_guide.html# PyTorch Recipes https://pytorch.org/tutorials/recipes/recipes_index.h…

项目管理进阶之EVM(挣值管理)

前言 项目管理进阶系列,终于有时间更新啦!!!欢迎持续关注哦~ 上一节博主重点讲了一个环:PDCA,无论各行各业,上到航空航天、下到种地种菜,都离不开对质量的监督和改进。这个环既是一…

面试题:script标签中 defer(延迟)和 async(异步) 有啥区别?(他们只对外部脚本有效)

defer脚本即使下载完成,也会被延迟到整个页面都解析完毕后再运行,运行结束后触发DOMContentLoaded事件。” “而async脚本下载完成后立即执行,可能会在 DOMContentLoaded之前或之后,保证在页面的 load 事件前执行

MyBatis 关于查询语句上配置的详细内容

1. MyBatis 关于查询语句上配置的详细内容 文章目录 1. MyBatis 关于查询语句上配置的详细内容2. 准备工作3. SQL查询结果&#xff0c;返回为POJO实体类型4. SQL查询结果&#xff0c;返回为List<POJO\> 集合类型5. SQL查询结果&#xff0c;返回为Map 集合6. SQL查询结果&…

洗地机性价比高的是哪一款?行内人告诉你

在浏览前&#xff0c;希望您轻触屏幕上方的“关注”按钮&#xff0c;让我后续为您带来更多实用且精彩的内容&#xff0c;感谢您的支持&#xff01; 洗地机作为现在的流行清洁工具&#xff0c;它的魅力之处在于&#xff1a;性价比极高&#xff0c;大多数家庭无需花费过多就能把…

IPNV6写法

黄色---一致 红色---取消 V4中的第二列用于分片 V6可以使用扩展首部实现 蓝色--替代 1、服务类型--扩展表 2、报头长度---有效负载长度 3、TTL--跳数限制 4、协议号---下一个头…

英伟达开源 3400 亿参数模型;苹果 iOS 18 紧急 SOS 新增实时视频功能丨 RTE 开发者日报 Vol.225

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

力扣172. 阶乘后的零

Problem: 172. 阶乘后的零 文章目录 题目描述思路及解法复杂度Code 题目描述 思路及解法 1.要使得末尾出现0&#xff0c;则乘式中必须出现因子2与5&#xff1b; 2.而由于对于一个数的阶乘&#xff0c;易知因子2的个数是大于因子5的个数&#xff08;因为只要出现偶数则可以分解出…

vscode c++ 开发环境配置

今天各位同学已经安装了mingw环境&#xff0c;但部分同学vscode开发环境又问题&#xff0c;究其原因&#xff0c;还是vscode 编译环境配置错误&#xff0c;有问题的同学 按如下步骤处理&#xff1a; 1、卸载相关插件&#xff0c;特别是中文插件&#xff0c;原因是暂时回避中文…