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

  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)

输出结果:

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测试代码发现已经成功返回数据

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
心中带点小风骚的头像心中带点小风骚普通用户
上一篇 2023年5月5日
下一篇 2023年5月5日

相关推荐