如何安全地将OpenAI API密钥添加到系统环境中

OpenAI API密钥是访问OpenAI API服务的关键。本文将介绍怎么以安全的方式将API密钥添加到系统环境中,以便您可使用OpenAI的人工智能功能。

I. 了解OpenAI API密钥

A. OpenAI API密钥的作用

1. OpenAI API密钥用于访问OpenAI API服务,使您能够使用OpenAI的人工智能功能。

2. 它是您与OpenAI进行身份验证和授权的凭证。

B. 获得OpenAI API密钥

1. 登录OpenAI官方网站,导航到API密钥页面。

2. 创建一个新的API密钥,或使用现有的API密钥。

II. 将OpenAI API密钥添加到系统环境中

A. 使用终端命令添加API密钥

1. 打开终端,并履行以下命令:echo "export OPENAI_API_KEY='yourkey'" >> ~/.zshrc

2. 将yourkey替换为您的实际API密钥,并履行命令。

B. 更新系统环境变量

1. 在终端中运行source ~/.zshrc命令,以更新当前shell的环境变量。

2. 您现在可以在系统中的任何利用程序中使用OPENAI_API_KEY环境变量。

III. Python中使用OpenAI API密钥

A. 设置环境变量

1. 在终端中履行以下命令:export OPENAI_API_KEY=<your-secret-key>

2. 将<your-secret-key>替换为您的实际API密钥。

B. 使用OpenAI库

1. 在Python脚本中导入openai库。

2. 在代码中使用openai.api_key = <your-secret-key>设置API密钥。

IV. 安全注意事项

A. 不要将API密钥直接暴露在公共代码中或版本控制系统中。

1. 可以通过将API密钥存储在单独的配置文件中,并在代码中援用该文件来增加安全性。

2. 请确保在共享或发布代码之前删除或替换任何包括API密钥的文件。

B. 定期更改API密钥以提高安全性。

1. OpenAI建议定期更改API密钥,以减少潜伏的安全风险。

2. 在更改API密钥后,请确保修改所有相关的利用程序和脚本,以使用新的API密钥。

V. 总结

OpenAI API密钥是访问OpenAI API服务的关键。您可以通过将API密钥添加到系统环境变量或在Python代码中设置来安全地使用它。为了确保安全性,不要直接暴露API密钥,并定期更改密钥。对API密钥的保护是保障您数据和系统安全的重要一步。

export openai_api_key= openai_api_key的进一步展开说明

# 进一步展开说明

## 快速开始

### 安装 LangChain

要安装 LangChain,可以运行以下命令:

使用 pip 安装:

“`
pip install langchain
“`

或使用 conda 安装:

“`
conda install langchain -c conda-forge
“`

### 详细安装指南

要了解更多详细信息,请查看我们的安装指南。

## 使用 LangChain

使用 LangChain 通常需要与一个或多个模型提供商、数据存储和 API 进行集成。在本例中,我们将使用 OpenAI 的模型 API。

首先,需要安装他们的 Python 包:

使用 pip 安装:

“`
pip install openai
“`

要访问 API,需要一个 API 密钥。可以通过创建一个账户并在[此处](https://openai.com/signup/)获得 API 密钥。拿到密钥后,我们需要将其设置为环境变量,方法是运行以下命令:

“`
export OPENAI_API_KEY=”your-api-key”
“`

如果您不想设置环境变量,您也能够直接通过初始化 OpenAI LLM 类时使用名为 openai_api_key 的参数来传递密钥:

“`
from langchain.llms import OpenAI

llm = OpenAI(openai_api_key=”your-api-key”)
“`

现在,我们可以开始构建语言模型利用程序了。LangChain 提供了许多模块,可用于构建语言模型利用程序。模块可以在简单利用程序中作为单独的模块使用,也能够在更复杂的用例中进行组合使用。

LangChain 利用程序的核心构建块是 LLMChain。它组合了三个要素:

1. LLM: 语言模型是核心推理引擎。要使用 LangChain,您需要了解区别类型的语言模型和如何与它们一起使用。

2. Prompt 模板: 这提供了与语言模型的指令。这控制语言模型的输出,因此了解如何构建提示和区别的提示策略相当重要。

3. 输出解析器: 它们将 LLM 的原始响应转换为更可操作的格式,使其易于在下游使用输出。

在这个入门指南中,我们将独立介绍这三个组件,然后介绍如何组合它们构成 LLMChain。理解这些概念将使您能够有效地使用和自定义 LangChain 利用程序。大多数 LangChain 利用程序允许您配置 LLM 和/或使用的提示,因此,了解如何利用这些配置项将是一个重要的能力。

## 语言模型的两种类型

LangChain中有两种类型的语言模型:

1. LLMs: 这是一种以字符串作为输入并返回字符串的语言模型。

2. ChatModels: 这是一种以消息列表作为输入并返回消息的语言模型。

LLMs 的输入/输出很简单易懂 – 只是一个字符串。但是 ChatModels 呢?输入是一个 ChatMessage 的列表,输出是单个 ChatMessage。ChatMessage 包括两个一定要组成部份:

– content: 这是消息的内容。

– role: 这是 ChatMessage 来自的实体的角色。

LangChain 提供了几个对象,以便轻松辨别区别角色:

– HumanMessage: 来自人类/用户的 ChatMessage。

– AIMessage: 来自 AI/助手的 ChatMessage。

– SystemMessage: 来自系统的 ChatMessage。

– FunctionMessage: 来自函数调用的 ChatMessage。

如果上述多种角色都不适合,还可使用 ChatMessage 类手动指定角色。要了解如何最有效地使用这些区别的消息,请参阅我们的提示指南。

LangChain 为这两种类型的模型提供了一个标准接口,但了解这类差异对构建特定语言模型的提示非常有用。LangChain 提供的标准接口有两种方法:

1. predict: 接受一个字符串作为输入,返回一个字符串。

2. predict_messages: 接受一个消息列表作为输入,返回一个消息。

让我们看看怎么处理这些区别类型的模型和区别类型的输入。首先,让我们导入一个 LLM 和一个 ChatModel。

“`
from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI

llm = OpenAI()
chat_model = ChatOpenAI()
“`

接下来,让我们使用 predict 方法履行字符串输入。

“`
text = “What would be a good company name for a company that makes colorful socks?”

llm.predict(text)
# Output: “Hi”

chat_model.predict(text)
# Output: “Hi”
“`

OpenAI 和 ChatOpenAI 对象本质上只是配置对象。您可使用参数进行初始化,如温度等,并在各个对象之间传递。

最后,让我们使用 predict_messages 方法将其利用于消息列表。

“`
from langchain.schema import HumanMessage

text = “What would be a good company name for a company that makes colorful socks?”
messages = [HumanMessage(content=text)]

llm.predict_messages(messages)
# Output: “”

chat_model.predict_messages(messages)
# Output: “”
“`

对这两种方法,您还可以通过关键字参数传递参数。例如,您可以传递 temperature=0 来调剂在运行时使用的温度,该值将始终覆盖对象的配置。

大多数 LLM 利用程序不会直接将用户输入传递到 LLM 中。通常,它们会将用户输入添加到更大的文本片断中,称为提示模板,该片断提供有关特定任务的其他上下文信息。

在上面的例子中,我们传递给模型的文本包括了生成一个公司名称的指令。为了我们的利用程序,如果用户只需要提供公司/产品的描写,而无需担心给模型指令,那将非常方便。

这就是 PromptTemplates 能够解决的问题!它们捆绑了将用户输入转换为完全格式化提示的所有逻辑。这可以始于非常简单的情势 – 例如,生成上面字符串的提示只需以下:

“`
from langchain.prompts import PromptTemplate

prompt = PromptTemplate.from_template(“What is a good name for a company that makes {product}?”)
prompt.format(product=”colorful socks”)

# Output: “What is a good name for a company that makes colorful socks?”
“`

但是,使用这些与使用原始字符串格式化相比的优势有几个。可以局部格式化变量 – 例如,您可以一次只格式化某些变量。您可以将它们组合在一起,轻松地将区别的模板组合成一个提示。有关这些功能的解释,请参阅提示章节。

PromptTemplates 也可用于生成消息列表。在这类情况下,提示不但包括有关内容的信息,还包括每一个消息(其角色、在列表中的位置等)。在这里,最多见的是 ChatPromptTemplate 是 ChatMessageTemplates 的列表。每一个 ChatMessageTemplate 包括有关如何格式化该 ChatMessage 的指令 – 其角色,和其内容。以下是示例:

“`
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)

template = “You are a helpful assistant that translates {input_language} to {output_language}.”
system_message_prompt = SystemMessagePromptTemplate.from_template(template)

human_template = “{text}”
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chat_prompt.format_messages(input_language=”English”, output_language=”French”, text=”I love programming.”)

# Output:
# [
# SystemMessage(content=”You are a helpful assistant that translates English to French.”, additional_kwargs={}),
# HumanMessage(content=”I love programming.”)
# ]
“`

ChatPromptTemplates 还可以包括除 ChatMessageTemplates 以外的其他内容 – 请参阅提示章节以了解更多详细信息。

OutputParsers 将 LLM 的原始输出转换为下游可用的格式。它们主要有以下几种类型的 OutputParsers:

– 将 LLM 的文本转换为结构化信息(例如 JSON)。
– 将 ChatMessage 转换为仅包括字符串。
– 将调用返回的消息以外的其他信息(如 OpenAI 函数调用)转换为字符串。

有关所有详细信息,请参阅输出解析器章节。

在这个入门指南中,我们将编写一个自定义的输出解析器 – 将逗号分隔的列表转换为列表的情势。

“`
from langchain.schema import BaseOutputParser

class CommaSeparatedListOutputParser(BaseOutputParser):
“””Parse the output of an LLM call to a comma-separated list.”””

def parse(self, text: str):
“””Parse the output of an LLM call.”””
return text.strip().split(“, “)

CommaSeparatedListOutputParser().parse(“hi, bye”)

# Output: [‘hi’, ‘bye’]
“`

现在,我们可以将所有这些组合成一个链。该链将接收输入变量,将其传递给提示模板以创建提示,将提示传递给 LLM,然后通过一个(可选的)输出解析器处理输出。这是捆绑一个模块化逻辑的便捷方式。让我们看看它的作用!

“`
from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
ChatPromptTemplate,
SystemMessagePromptTemplate,
HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser

class CommaSeparatedListOutputParser(BaseOutputParser):
“””Parse the output of an LLM call to a comma-separated list.”””

def parse(self, text: str):
“””Parse the output of an LLM call.”””
return text.strip().split(“, “)

template = “””You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma
separated list.
ONLY return a comma separated list, and nothing more.”””

system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = “{text}”
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])

chain = LLMChain(
llm=ChatOpenAI(),
prompt=chat_prompt,
output_parser=CommaSeparatedListOutputParser()
)

chain.run(“colors”)
“`

以上就是了!我们已完成了怎样创建 LangChain 利用程序的核心构建块 – LLMChains。在所有这些组件(LLMs、提示和输出解析器)中还有更多的细微差别,还有更多区别的组件需要了解。要继续您的学习之旅,请参阅以下内容:

export openai_api_key= openai_api_key的常见问答Q&A

问题1:如何确保API密钥的安全性?

答案:确保API密钥的安全性是非常重要的,以下是一些最好实践:

  • 不要将API密钥硬编码在源代码中,而是将其存储在安全的地方,例如环境变量或密钥管理服务中。
  • 定期轮换API密钥,不要使用相同的密钥太长时间。
  • 限制API密钥的权限,只授与必要的访问权限。

相关信息:

  • 当使用OpenAI API时,可以将API密钥添加到系统环境变量中,以在代码中援用。
  • 在Windows操作系统中,使用以下命令将API密钥添加到环境变量中:export OPENAI_API_KEY=’yourkey’。
  • 在Python代码中使用OpenAI API时,可以将API密钥作为参数传递。

ChatGPT相关资讯

ChatGPT热门资讯

X

截屏,微信识别二维码

微信号:muhuanidc

(点击微信号复制,添加好友)

打开微信

微信号已复制,请打开微信添加咨询详情!