当前位置:首页 » 《随便一记》 » 正文

调用OpenAI API创作及遇到的问题

24 人参与  2023年05月07日 19:13  分类 : 《随便一记》  评论

点击全文阅读


  1、获取API密钥

使用OpenAI账号登入:OpenAI登入后选择View API keys -> API Keys页面。

  点击Create new secret key获得一个API密钥,复制。

 2、连接API

pip命令安装OpenAI python包:pip install openai

在要编写的Python程序中导入OpenAI包并使用刚才获得的API密钥

import openai

openai.api_key = "YOUR_API_KEY"#第一步获取的API密钥

3、文本生成

使用openai.Completion.create()方法来生成文本

prompt = "Once upon a time"response = openai.Completion.create(    engine="davinci",    prompt=prompt,    temperature=0.5,    max_tokens=50,    n=1,    stop=None,    timeout=20,)print(response.choices[0].text)

 4、创作示例

import openaiopenai.api_key = "YOUR_API_KEY" #刚才获取的API密钥prompt = "推荐5本最适合学习Java的书籍"response = openai.Completion.create(    engine="text-davinci-003",    prompt=prompt,    temperature=0.8,    max_tokens=1000,    n=1,    stop=None,    timeout=20,)print(response.choices[0].text)

输出结果:

1. 《Java编程思想(第4版)》:是一本著名的入门书籍,内容涵盖了Java基础知识、类、对象、接口、字符串、异常、泛型、IO流等。

2. 《java核心技术 卷Ⅰ:基础知识(第9版)》:是一本最新的Java技术入门教程,主要介绍Java的基础知识和范例,内容涵盖了Java语言的基本概念、基本技术、面向对象编程、类、构造器、接口、内部类、包和异常处理等。

3. 《Java 8实战(第2版)》:是一本介绍Java 8新特性的书籍,大量地使用示例和案例详细介绍了新增的特性,内容涵盖了lambda表达式、新特性stream API、定制接口、时间日期API、并发API等等。

4. 《深入理解Java虚拟机(第2版)》:是一本经典的深入剖析JVM的书籍,详细讲解了JVM的内部结构,内容涵盖了类加载机制、内存分配、垃圾收集、JIT编译、类文件格式等等。

5. 《Java性能优化权威指南(第2版)》:是一本专业介绍Java性能优化技术的书籍,包括了Java应用性能针对性分析和优化技术,内容涵盖了Java应用性能分析、垃圾收集器、内存优化、网络性能优化、JVM参数调优等。

Process finished with exit code 0

 5、可能遇到的问题

 因为目前openai对地区限制的原因,即使设置了全局代理使用API调用时,还是会出现科学上网代理的错误问题。

错误提示:openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url: /v1/engines/text-davinci-003/completions (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x00000205FFB386A0>: Failed to establish a new connection: [WinError 10060] 由于连接方在一段时间后没有正确答复或连接的主机没有反应,连接尝试失败。'))

解决办法:

①打开文件路径:D:\Anaconda3\envs\py\Lib\site-packages\openai\api_reuqestor.py(openai库路径)

②找到if not hasattr(_thread_context,"session"): 方法,并在此方法上加入代理。(此方法大概在512行)

# proxy = {#    'http': 'http://<代理ip>:<代理端口>',#    'https': 'https://<代理ip>:<代理端口>'#       } proxy={            'http':'127.0.0.1:10809',            'https':'127.0.0.1:10809'        }

③在result = _thread_context.session.request(中加入代理

result = _thread_context.session.request(                method,                abs_url,                headers=headers,                data=data,                files=files,                stream=stream,                timeout=request_timeout if request_timeout else TIMEOUT_SECS,                proxies=proxy    # 新增此行            )

 再次运行API测试代码发现已经成功返回数据


点击全文阅读


本文链接:http://m.zhangshiyu.com/post/61465.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1