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(‘: 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://:',#'https': 'https://:'# } 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测试代码发现已经成功返回数据