使用 Python 自带的多线程库 `threading` 可以实现多线程调用 ChatGPT API 接口。具体步骤如下:
1. 导入 `threading` 库和 `requests` 库:
```python
import threading
import requests
```
2. 定义一个函数用于调用 ChatGPT API 接口并返回结果:
```python
def chat(query):
url = 'https://api.openai.com/v1/engines/davinci-codex/completions'
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
}
data = {
'prompt': query,
'max_tokens': 100,
'temperature': 0.7,
'n': 1,
'stop': '\n'
}
response = requests.post(url, headers=headers, json=data)
return response.json()['choices'][0]['text']
```
其中,`YOUR_API_KEY` 需要替换为自己的 API Key。该函数会接收一个参数 `query`,即聊天的问题,然后通过 API 接口返回一个回答。
3. 定义一个线程类,重写 `__init__` 和 `run` 方法:
```python
class ChatThread(threading.Thread):
def __init__(self, query):
threading.Thread.__init__(self)
self.query = query
def run(self):
result = chat(self.query)
print(result)
```
在 `__init__` 方法中传入一个参数 `query`,该参数会在调用线程时传入,并保存到线程对象中,供 `run` 方法使用。`run` 方法中就是调用 ChatGPT API 接口,并输出结果。
4. 创建多个线程对象并启动:
```python
queries = ['Hi, how are you?', 'What is your name?', 'Can you help me with this problem?']
threads = []
for query in queries:
thread = ChatThread(query)
thread.start()
threads.append(thread)
for thread in threads:
thread.join()
```
在这个例子中,我们创建了三个待聊天的问题,并分别用每个问题创建一个线程对象。通过循环启动线程,并将线程对象保存到列表中。最后通过循环等待线程结束。
以上就是一个简单的多线程调用 ChatGPT API 接口的示例代码。需要注意的是,在使用 API 接口时要注意 API Key 的权限和使用频率限制。