Python调用open ai接口

news/2024/12/23 22:40:33 标签: 人工智能, python

要使用 Python 调用 OpenAI 的接口,您需要完成以下几个步骤:

1. **注册并获取 API 密钥**
2. **安装 OpenAI 的 Python 库**
3. **编写 Python 代码以调用 API**

以下是详细的步骤说明:

---

### 1. 注册并获取 API 密钥

首先,您需要在 [OpenAI 官方网站](https://beta.openai.com/signup/) 注册一个账户。注册完成后,您需要创建一个 API 密钥:

1. 登录到您的 OpenAI 账户。
2. 导航到 [API Keys](https://beta.openai.com/account/api-keys) 页面。
3. 点击“Create new secret key”按钮,生成一个新的 API 密钥。**请妥善保存此密钥,因为之后无法再次查看。**

### 2. 安装 OpenAI 的 Python 库

OpenAI 提供了官方的 Python 库,您可以使用 `pip` 来安装:

```bash
pip install openai
```

如果您使用的是 Python 3,可能需要使用 `pip3`:

```bash
pip3 install openai
```

### 3. 编写 Python 代码以调用 API

以下是一个使用 OpenAI 的 `text-davinci-003` 模型生成文本的示例代码:

```python
import openai
import os

# 设置您的 OpenAI API 密钥
# 建议将密钥存储在环境变量中,而不是硬编码在代码中
# 例如,在终端中运行:export OPENAI_API_KEY='your_api_key_here'
openai.api_key = os.getenv("OPENAI_API_KEY")

def generate_text(prompt, max_tokens=100, temperature=0.7):
    """
    使用 OpenAI 的 GPT-3 模型生成文本。

    参数:
    - prompt (str): 输入的提示文本。
    - max_tokens (int): 生成的最大 token 数。
    - temperature (float): 模型的温度参数,控制输出的随机性。

    返回:
    - str: 生成的文本。
    """
    try:
        response = openai.Completion.create(
            engine="text-davinci-003",
            prompt=prompt,
            max_tokens=max_tokens,
            temperature=temperature,
            n=1,
            stop=None,
            timeout=10
        )
        return response.choices[0].text.strip()
    except Exception as e:
        return f"Error: {e}"

if __name__ == "__main__":
    user_prompt = "写一段关于人工智能的简短介绍。"
    generated = generate_text(user_prompt, max_tokens=150, temperature=0.5)
    print("生成的文本:")
    print(generated)
```

#### 代码说明:

1. **导入库**
   ```python
   import openai
   import os
   ```
   - `openai`: OpenAI 的官方 Python 库。
   - `os`: 用于访问环境变量。

2. **设置 API 密钥**
   ```python
   openai.api_key = os.getenv("OPENAI_API_KEY")
   ```
   - 推荐将 API 密钥存储在环境变量中,以增强安全性。您可以在终端中运行以下命令来设置环境变量:
     ```bash
     export OPENAI_API_KEY='your_api_key_here'
     ```
   - 或者,您也可以直接在代码中设置:
     ```python
     openai.api_key = "your_api_key_here"
     ```
     **注意**: 将 API 密钥硬编码在代码中存在安全风险,不推荐。

3. **定义生成文本的函数**
   ```python
   def generate_text(prompt, max_tokens=100, temperature=0.7):
       ...
   ```
   - `prompt`: 输入的提示文本。
   - `max_tokens`: 生成的最大 token 数。
   - `temperature`: 控制输出的随机性。值越高,输出越随机。

4. **调用 OpenAI 的 Completion API**
   ```python
   response = openai.Completion.create(
       engine="text-davinci-003",
       prompt=prompt,
       max_tokens=max_tokens,
       temperature=temperature,
       n=1,
       stop=None,
       timeout=10
   )
   ```
   - `engine`: 使用的模型名称,例如 `text-davinci-003`。
   - `n`: 返回的生成结果数量。
   - `stop`: 指定停止生成的条件。

5. **处理异常**
   ```python
   except Exception as e:
       return f"Error: {e}"
   ```
   - 捕获并返回异常信息。

6. **主程序**
   ```python
   if __name__ == "__main__":
       user_prompt = "写一段关于人工智能的简短介绍。"
       generated = generate_text(user_prompt, max_tokens=150, temperature=0.5)
       print("生成的文本:")
       print(generated)
   ```
   - 设置用户提示,调用生成函数,并打印结果。

#### 示例输出:

```
生成的文本:
人工智能(AI)是指由计算机系统执行通常需要人类智能的任务,例如视觉识别、语音识别、决策和语言翻译。AI 技术正在迅速发展,涵盖了从简单的自动化到复杂的机器学习算法等多个领域。通过利用大数据和强大的计算能力,AI 在医疗、金融、交通等众多行业中展现了巨大的潜力。
```

### 4. 其他示例

#### 使用 ChatGPT 模型进行对话

如果您使用的是 ChatGPT 模型,可以参考以下示例:

```python
import openai

openai.api_key = os.getenv("OPENAI_API_KEY")

def chatgpt_conversation(messages, model="gpt-3.5-turbo", max_tokens=150, temperature=0.5):
    """
    使用 ChatGPT 模型进行对话。

    参数:
    - messages (list): 消息列表,每个元素是一个字典,包含 'role' 和 'content'。
    - model (str): 使用的模型名称。
    - max_tokens (int): 生成的最大 token 数。
    - temperature (float): 模型的温度参数。

    返回:
    - str: 生成的文本。
    """
    try:
        response = openai.ChatCompletion.create(
            model=model,
            messages=messages,
            max_tokens=max_tokens,
            temperature=temperature
        )
        return response.choices[0].message.content.strip()
    except Exception as e:
        return f"Error: {e}"

if __name__ == "__main__":
    conversation = [
        {"role": "system", "content": "你是一个友好的助手。"},
        {"role": "user", "content": "你好!"},
        {"role": "assistant", "content": "你好!有什么我可以帮您的吗?"},
        {"role": "user", "content": "请告诉我一些关于人工智能的知识。"}
    ]
    response = chatgpt_conversation(conversation, model="gpt-3.5-turbo", max_tokens=150, temperature=0.5)
    print("ChatGPT 的回答:")
    print(response)
```

#### 代码说明:

1. **定义对话函数**
   ```python
   def chatgpt_conversation(messages, model="gpt-3.5-turbo", max_tokens=150, temperature=0.5):
       ...
   ```
   - `messages`: 消息列表,包含系统消息和用户消息。
   - `model`: 使用的模型名称,例如 `gpt-3.5-turbo`。
   - 其他参数与之前相同。

2. **设置对话内容**
   ```python
   conversation = [
       {"role": "system", "content": "你是一个友好的助手。"},
       {"role": "user", "content": "你好!"},
       {"role": "assistant", "content": "你好!有什么我可以帮您的吗?"},
       {"role": "user", "content": "请告诉我一些关于人工智能的知识。"}
   ]
   ```

3. **调用 ChatGPT API 并打印结果**
   ```python
   response = chatgpt_conversation(conversation, model="gpt-3.5-turbo", max_tokens=150, temperature=0.5)
   print("ChatGPT 的回答:")
   print(response)
   ```

#### 示例输出:

```
ChatGPT 的回答:
当然可以!人工智能(AI)是指由计算机系统执行通常需要人类智能的任务,例如视觉识别、语音识别、决策和语言翻译。AI 技术正在迅速发展,涵盖了从简单的自动化到复杂的机器学习算法等多个领域。通过利用大数据和强大的计算能力,AI 在医疗、金融、交通等众多行业中展现了巨大的潜力。
```

### 5. 注意事项

- **API 费用**: OpenAI 的 API 不是免费的,具体费用请参考 [OpenAI 定价页面](https://openai.com/pricing)。
- **API 限制**: 请注意 API 的使用限制,例如速率限制和配额限制。
- **安全性**: 不要在公共代码库中暴露您的 API 密钥。可以使用环境变量或配置文件来存储密钥。

---

通过以上步骤,您就可以使用 Python 调用 OpenAI 的接口。


http://www.niftyadmin.cn/n/5797083.html

相关文章

AtCoder Beginner Contest 385(A~F)题解

A - Equally 思路&#xff1a;由题可知最多只能分成三组&#xff0c;我们只需要判断是否三个数都相等&#xff0c;或者两个数相加等于另外一个数即可 #include<bits/stdc.h> using namespace std; #define int long long int n; string s; int a,b,c; signed main() {ci…

MySQL 主从复制与高可用

在现代分布式系统中&#xff0c;数据库的高可用性和可靠性至关重要。MySQL 提供了主从复制&#xff08;Master-Slave Replication&#xff09;机制来实现数据的冗余和容错&#xff0c;保证在主数据库发生故障时能够继续提供服务。而在此基础上&#xff0c;通过进一步的高可用架…

严格推导质点曲线运动的运动学方程

前言 相当一部分物理学书籍在推导质点曲线运动的运动学方程时&#xff0c;采用的都是先建立位移的微元 Δ r ⃗ \Delta \vec{r} Δr &#xff0c;然后几何近似求极限的方法。这种方法虽然能得到正确的结论&#xff0c;但数学上的严格性略有欠缺&#xff0c;且过程繁琐。考虑到…

tomcat的安装以及配置(基于linuxOS)

目录 安装jdk环境 yum安装 验证JDK环境 安装tomcat应用 yum安装 ​编辑 使用yum工具进行安装 配置tomcat应用 关闭防火墙和selinux 查看端口开启情况 ​编辑 访问tomcat服务 安装扩展包 重启服务 查看服务 源码安装 进入tomcat官网进行下载 查找自己要用的to…

html <a>设置发送邮件链接、打电话链接 <a href=“mailto:></a> <a href=“tel:></a>

1.代码 <ul><li>电话&#xff1a;<a href"tel:18888888888">188-8888-8888</a></li><li>邮箱&#xff1a;<a href"mailto:10000qq.com">10000qq.com</a></li><li>邮箱&#xff1a;<a hre…

sql注入之union注入

Sql注入之union注入攻击 今天讲讲sql注入攻击流程 事先声明&#xff0c;本文仅仅作为学习使用&#xff0c;因个人原因导致的后果&#xff0c;皆与本人无关&#xff0c;后果由个人承担。 本次演示靶机为封神台里的题目&#xff0c;具体连接如下 https://hack.zkaq.cn/battle…

<代码随想录> 算法训练营-2024.12.20

322. 零钱兑换 class Solution:def coinChange(self, coins: List[int], amount: int) -> int:# dp[i][j]表示 提供到coins[i]的硬币&#xff0c;总金额为j的最少硬币个数 硬币个数无限&#xff0c;完全背包# 有两种取值&#xff0c;一种是取dp[i-1][j] 另一种是如果j比当前…

HarmonyOS NEXT 技术实践-基于基础视觉服务实现骨骼点识别

本示例展示了如何在HarmonyOS Next中实现基于基础视觉服务的骨骼点识别功能。骨骼点识别是计算机视觉中的一项重要技术&#xff0c;广泛应用于运动分析、健身监控和增强现实等领域。通过使用HarmonyOS Next提供的视觉API&#xff0c;开发者能够轻松地对人物图像进行骨骼点检测&…