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 openai
openai.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)
输出结果:
《Java编程思想(第4版)》:是一本著名的入门书籍,内容涵盖了Java基础知识、类、对象、接口、字符串、异常、泛型、IO流等。
《java核心技术 卷Ⅰ:基础知识(第9版)》:是一本最新的Java技术入门教程,主要介绍Java的基础知识和范例,内容涵盖了Java语言的基本概念、基本技术、面向对象编程、类、构造器、接口、内部类、包和异常处理等。
《Java 8实战(第2版)》:是一本介绍Java 8新特性的书籍,大量地使用示例和案例详细介绍了新增的特性,内容涵盖了lambda表达式、新特性stream API、定制接口、时间日期API、并发API等等。
《深入理解Java虚拟机(第2版)》:是一本经典的深入剖析JVM的书籍,详细讲解了JVM的内部结构,内容涵盖了类加载机制、内存分配、垃圾收集、JIT编译、类文件格式等等。
《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测试代码发现已经成功返回数据
版权归原作者 GanLiBin1207 所有, 如有侵权,请联系我们删除。