Linguistic Email Composer Web Application Using OpenAI and Langchain(langchain set openai api key)
I. 如何取得OpenAI API密钥
A. 访问OpenAI网站获得密钥
要获得OpenAI API密钥,首先需要访问OpenAI网站并登录你的账号。打开OpenAI网站后,导航至API密钥页面。
- 打开OpenAI网站并登录账号。
- 在导航菜单当选择API密钥页面。
B. 创建新的密钥
在API密钥页面上,你可以选择创建新的密钥,并将其复制并保存。
- 在API密钥页面上,选择”创建新的密钥”。
- 复制生成的密钥并保存到安全的位置。
II. 在Python中设置LangChain的OpenAI API密钥
A. 安装OpenAI库
在开始设置LangChain的OpenAI API密钥之前,首先需要安装OpenAI库。
- 使用pip命令安装openai库:
pip install openai
B. 设置API密钥
接下来,在Python代码中设置LangChain的OpenAI API密钥。
- 导入openai库:
- 将API密钥设置为变量:
import openai
openai.api_key = 'YOUR_API_KEY'
C. 使用LangChain与OpenAI模型交互
设置密钥后,你可使用LangChain与OpenAI模型进行交互。
- 通过获得密钥令牌对模型进行身份验证:
- 使用密钥对模型进行交互:
token = openai.api_key
output = langchain_model.generate_tokens(token, input)
III. 在用户界面中设置OpenAI API密钥
A. 创建用户界面组件
如果你想在用户界面中设置OpenAI API密钥,你需要创建相应的组件。
- 创建一个API密钥输入框,供用户输入API密钥。
- 创建一个问题交互组件,让用户输入问题。
B. 获得用户输入的API密钥
从用户界面获得用户输入的API密钥。
- 从API密钥输入框中获得API密钥。
C. 将API密钥利用于LangChain
将用户输入的API密钥与LangChain集成,以便进行模型交互。
- 将用户输入的API密钥设置为变量。
- 将API密钥利用于LangChain模型。
api_key = user_input
langchain_model.set_api_key(api_key)
IV. 将OpenAI API密钥设置为环境变量
A. 定义环境变量
另外一种设置OpenAI API密钥的方式是将其设置为环境变量。
- 说明API密钥是环境变量的方式。
B. 将API密钥设置为环境变量
使用os.environ将API密钥设置为环境变量。
- 将API密钥设置为环境变量:
import os
os.environ['OPENAI_API_KEY'] = 'YOUR_API_KEY'
V. 使用LangChain进行PDF摘要并设置API密钥
A. 定义摘要函数
首先,定义一个使用LangChain进行PDF摘要的函数。
- 创建使用LangChain进行PDF摘要的函数:
def summarize_pdf(langchain, pdf_file):
summary = langchain.summarize(pdf_file)
return summary
B. 设置API密钥
调用设置API密钥的函数,将API密钥利用于LangChain模型。
- 调用设置API密钥的函数:
set_api_key(api_key)
VI. 处理OpenAI API密钥的代码样例
A. 提供处理API密钥的代码示例
以下是处理OpenAI API密钥的代码示例:
- 在代码中援用API密钥:
- 使用API密钥进行OpenAI交互:
import openai
openai.api_key = 'YOUR_API_KEY'
response = openai.Completion.create(
engine="text-davinci-003",
prompt="Once upon a time",
max_tokens=100)
langchain set openai api key的进一步展开说明
引言
本文将介绍怎样使用Langchain和OpenAI构建一个基于Web的利用程序。这个Web利用程序允许用户将无结构的电子邮件转换为格式正确的英文。用户可以输入他们的电子邮件文本,指定期望的语气和方言(正式/非正式和美式/英式英语),利用程序将根据所选风格提供美观的格式化电子邮件。我们不能每次都使用复制粘贴的方式来构建大范围的利用程序,这样做其实不能创建出可以随时使用的查询。相反,让我们开始构建这个使人惊叹的“专业邮件撰稿人”工具。
学习目标
学习怎样使用Streamlit构建美观的Web利用程序。
了解甚么是Prompt Engineering和如作甚生成电子邮件创建有效的提示。
学习怎样使用Langchain的PromptTemplate查询OpenAI LLM。
学习怎样使用Streamlit部署Python利用程序。
本文作为数据科学博文马拉松的一部份发表。
Streamlit设置
首先,我们需要了解streamlit是甚么,它是如何工作的,和如作甚我们的用例设置它。Streamlit允许我们使用Python创建Web利用程序,并在本地和Web上进行托管。首先,打开终端并使用下面的命令安装streamlit
pip install streamlit
为我们的脚本创建一个空的Python文件,并使用下面的命令运行该文件
python -m streamlit run [your_file_name.py]
这将在地址localhost:8501上启动一个空的streamlit利用程序。打开浏览器并搜索此地址以可视化利用程序。这个利用程序的一个很酷的功能是,您可以对代码进行编辑,它会自动更新浏览器中的利用程序。
构建前端
让我们从为我们的利用程序添加标题和页面标题开始。我将其命名为“专业邮件撰稿人”
#导入Streamlit库
import streamlit as st
#设置带标题和标题的Streamlit利用 st.set_page_config(page_title=”Professional Email Writer”, page_icon=”:robot:”)
#添加标题
st.header(“Professional Email Writer”)
输出:
接下来,我们需要用户的输入以了解用户希望的电子邮件。为此,我们使用streamlit提供的text_area函数。
# 获得用户输入的电子邮件文本
def getEmail():
input_text = st.text_area(label=”Email Input”, label_visibility=’collapsed’, placeholder=”Your Email…”, key=”input_text”)
return input_text
#获得用户输入
input_text = getEmail()
输出:
接下来,我们需要两个下拉菜单,向用户询问用户希望在他的电子邮件中使用的语气,即正式和非正式和期望使用的英语方言,即美式英语,英式英语。
#用于选择语气和方言的下拉菜单
column1, column2 = st.columns(2)
with column1:
tone_drop_down = st.selectbox(
‘Which tone would you like your email to have?’, (‘Formal’, ‘Informal’))
with column2:
dialect_drop_down = st.selectbox(
‘Which English Dialect would you like?’, (‘American’, ‘British’))
上述代码将创建两列,每列都包括一个使用selectbox()函数创建的下拉菜单。
输出:
我们需要强调,每当用户更新这些选择时,它都应当重新运行全部利用程序。就像在下拉菜单中切换时,全部利用程序都会进行一次大刷新。
提示工程
现在,我们需要将用户提供的电子邮件输入与提示模板一起通过Langchain传递给Langchain,并使用用户从下拉菜单当选择的配置从OpenAI获得格式正确的输出。
为此,我们需要设置一个提示模板。我们需要对优化输出进行一些提示工程。提示工程是使用我们可以询问语言模型的提示来构建提示的进程,并获得准确的结果。您可以根据需要修改此模板。
1.提示应清楚地描写用户正在提供的输入。例如,
Below is an email that may be unstructured and poorly worded.(下面是一个可能没有结构和措辞不当的电子邮件。)
2.提示应清楚地解释甚么是语言模型的输出。例如,
Your goal is to:(你的目标是:)
Format the email properly(正确格式化电子邮件)
Convert the input email into the tone specified in curly braces(将输入电子邮件转换为大括号中指定的语气)
Convert the input email into the dialect specified in curly braces.(将输入电子邮件转换为大括号中指定的方言)
3.提示应包括示例,以确保模型能够了解输出的期望。
4.最后,提示应清楚地唆使用户输入和每一个输入所指的内容。
以下是我们根据以上规则创建的提示:
# 定义电子邮件转换任务的模板
template = “””
Below is an email that may be unstructured and poorly worded.
Your goal is to:
– Format the email properly
– Convert the input email into the tone specified in curly braces.
– Convert the input email into the dialect specified in curly braces.
Take these examples of different tones as reference:
– Formal: We went to Hyderabad for the weekend. We have a lot of things to tell you.
– Informal: Went to Hyderabad for the weekend. Lots to tell you.
Below are some examples of words in different dialects:
– American: Garbage, cookie, green thumb, parking lot, pants, windshield, French Fries, cotton candy, apartment
– British: Green fingers, car park, trousers, windscreen, chips, candyfloss, flag, rubbish, biscuit
Example Sentences from each dialect:
– American: As they strolled through the colorful neighborhood, Sarah asked her friend if he wanted to grab a coffee at the nearby café. The fall foliage was breathtaking, and they enjoyed the pleasant weather, chatting about their weekend plans.
– British: As they wandered through the picturesque neighbourhood, Sarah asked her friend if he fancied getting a coffee at the nearby café. The autumn leaves were stunning, and they savoured the pleasant weather, chatting about their weekend plans.
Please start the email with a warm introduction. Add the introduction if you need to.
Below is the email, tone, and dialect:
TONE: {tone}
DIALECT: {dialect}
EMAIL: {email}
YOUR {dialect} RESPONSE: “””
现在使用PromptTemplate类和Langchain创建提示,使用这个提示可以将用户输入注入到模板中。
#从langchain导入PromptTemplate类
from langchain import PromptTemplate
#创建PromptTemplate实例来管理输入变量和模板
prompt = PromptTemplate(
input_variables=[“tone”, “dialect”, “email”],
template=query_template,
)
加载语言模型
确保您具有可用的OpenAI API密钥。如果还没有,请按以下步骤操作。
转到“https://openai.com/”并创建您的帐号。
登录到您的帐号,在仪表盘上选择“API”。
现在点击您的个人资料图标,然后选择“查看API密钥”。
选择“创建新的密钥”,复制并保存它。
OpenAI API密钥的代码
下面是一个函数的代码,它可以从用户那里获得OpenAI API密钥,并使用text_input()函数将示例API密钥显示为占位符。
# 展现OpenAI API密钥的文本输入 def fetchAPIKey(): input_text = st.text_input(label=”OpenAI API Key “, placeholder=”Ex: vk-Cb8un42twmA8tf…”, key=”openai_api_key_input”) return input_text
# 获得用户输入的OpenAI API密钥
openai_api_key = fetchAPIKey()
输出:
我们需要确保我们的API密钥要末在我们的脚本中,这其实不被推荐,由于我们不希望将其硬编码在任何地方,要末它应当在我们的环境变量中,我们的代码可以从中提取。创建环境变量的一种方法是使用一个单独的.env文件。
环境变量的步骤
依照以下步骤创建环境变量:
1:打开终端并使用命令“pip install python dotenv”安装python-dotenv包。
2:创建一个名为“.env”的文件。
3:以以下格式存储您的API密钥
API_KEY=your_api_key_here
4:加载dotenv包,并使用该包获得您的环境变量
from dotenv import load_dotenv
import os
# 从.env文件中加载环境变量
load_dotenv()
# 使用os.environ访问API密钥
openai_api_key = os.environ.get(“API_KEY”)
这类方法可以避免意外暴露API密钥直接在代码中。请将此文件保密,而不是公然共享。
但是,由于OpenAI API允许有限数量的API要求,我们将要求用户输入他们的API密钥,而不是使用我们自己的密钥。在这类情况下,我们将以temperature等于0.7的方式加载OpenAI模型,这意味着它将是有创造力的。下面的代码会在用户传递无效的OpenAI API密钥时抛出毛病。另外,如果用户输入无效的密钥,则一定要显示适当的正告。
#从langchain.llms导入OpenAI类
from langchain.llms import OpenAI
#加载语言模型
def loadLanguageModel(api_key_openai):
llm = OpenAI(temperature=.7, openai_api_key=api_key_openai)
return llm
示例
让我们向用户提供一个示例,以便用户可以了解他应当提供甚么作为输入,和可以期望得到甚么作为返回。让我们在前端创建一个“显示示例”按钮。下面的函数使用示例无结构和措辞不当的电子邮件查询更新文本框。
#更新文本框以显示示例电子邮件
def textBoxUpdateWithExample():
print(“in updated”)
st.session_state.input_text = “Vinay I am starts work at yours office from monday”
#按钮显示例电子邮件
st.button(“*Show an Example*”, type=’secondary’,help=”Click to see an example of the email you will be converting.”, on_click=textBoxUpdateWithExample)
st.markdown(“### Your Email:”)
输出:
接下来,我们需要确保用户已输入了他的API密钥,并且在调用语言模型之前,他应当在文本框中提供了一些查询。如果他在没有API密钥或无效API的情况下调用了模型,我们需要向用户显示正确获得秘密密钥的说明。
#如果用户提供了input_text,则继续进行电子邮件转换
if input_text:
if not openai_api_key:
# 如果未提供API密钥,请显示正告
st.warning(
‘Please insert OpenAI API Key. Instructions [here](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key)’,
icon=”⚠️”)
st.stop()
llm = loadLanguageModel(api_key_openai=openai_api_key)
prompt_with_email = prompt.format(
tone=tone_drop_down,
dialect=dialect_drop_down,
email=input_text
)
formatted_email = llm(prompt_with_email)
st.write(formatted_email)
输出:
如果用户在文本框中输入了正确的API密钥和正确的电子邮件文本,则我们将使用电子邮件文本和用户输入的配置(即语气和方言)格式化提示。然后,我们将将此提示传递给语言模型,LLM将以正确格式的电子邮件作为响应返回给我们,我们将使用Streamlit写()函数将其显示给用户在“Your Email”选项卡下。
部署利用程序
依照以下步骤部署利用程序:
首先,我们一定要将代码推送到GitHub存储库中。在推送之前,创建一个包括我们代码所有依赖项列表的requirements.txt文件。
langchain
openai
streamlit
转到streamlit.io并通过授权GitHub来创建帐户。
登录到您的streamlit帐户。
单击“创建新利用程序”,并传递GitHub存储库的所有详细信息。在主要文件路径下,给出包括Python脚本的文件名。最后,单击部署。
保存利用程序URL。几分钟后,使用该URL可以在Web上查看您的利用程序。
完全实现
# Import required libraries
from langchain import PromptTemplate
import streamlit as st
from langchain.llms import OpenAI
# Define the template for the email conversion task
query_template = “””
Below is an email that may be unstructured and poorly worded.
Your goal is to:
– Format the email properly
– Convert the input email into the tone specified in curly braces.
– Convert the input email into the dialect specified in curly braces.
Take these examples of different tones as reference:
– Formal: We went to Hyderabad for the weekend. We have a lot of things to tell you.
– Informal: Went to Hyderabad for the weekend. Lots to tell you.
Below are some examples of words in different dialects:
– American: Garbage, cookie, green thumb, parking lot, pants, windshield, French Fries, cotton candy, apartment
– British: Green fingers, car park, trousers, windscreen, chips, candyfloss, flag, rubbish, biscuit
Example Sentences from each dialect:
– American: As they strolled through the colorful neighborhood, Sarah asked her friend if he wanted to grab a coffee at the nearby café. The fall foliage was breathtaking, and they enjoyed the pleasant weather, chatting about their weekend plans.
– British: As they wandered through the picturesque neighbourhood, Sarah asked her friend if he fancied getting a coffee at the nearby café. The autumn leaves were stunning, and they savoured the pleasant weather, chatting about their weekend plans.
Please start the email with a warm introduction. Add the introduction if you need to.
Below is the email, tone, and dialect:
TONE: {tone}
DIALECT: {dialect}
EMAIL: {email}
YOUR {dialect} RESPONSE:
“””
# Create a PromptTemplate instance to manage the input variables and the template
prompt = PromptTemplate(
input_variables=[“tone”, “dialect”, “email”],
template=query_template,
)
# Function to load the Language Model
def loadLanguageModel(api_key_openai):
llm = OpenAI(temperature=.7, openai_api_key=api_key_openai)
return llm
# Set up Streamlit app with Header and Title
st.set_page_config(page_title=”Professional Email Writer”, page_icon=”:robot:”)
st.header(“Professional Email Writer”)
# Create columns for the Streamlit layout
column1, column2 = st.columns(2)
# Display text input for OpenAI API Key
def fetchAPIKey():
input_text = st.text_input(label=”OpenAI API Key “, placeholder=”Ex: vk-Cb8un42twmA8tf…”, key=”openai_api_key_input”)
return input_text
# Get the OpenAI API Key from the user
openai_api_key = fetchAPIKey()
# Display dropdowns for selecting tone and dialect
column1, column2 = st.columns(2)
with column1:
tone_drop_down = st.selectbox(
‘Which tone would you like your email to have?’, (‘Formal’, ‘Informal’))
with column2:
dialect_drop_down = st.selectbox(
‘Which English Dialect would you like?’, (‘American’, ‘British’))
# Get the user input email text
def getEmail():
input_text = st.text_area(label=”Email Input”, label_visibility=’collapsed’, placeholder=”Your Email…”, key=”input_text”)
return input_text
# Get user input
input_text = getEmail()
# Check if the email exceeds the word limit
if len(input_text.split(” “)) > 700:
st.write(“Maximum limit is 700 words. Please enter a shorter email”)
st.stop()
# Function to update the text box with an example email
def textBoxUpdateWithExample():
print(“in updated”)
st.session_state.input_text = “Vinay I am starts work at yours office from monday”
# Button to show an example email
st.button(“*Show an Example*”, type=’secondary’,help=”Click to see an example of the email you will be converting.”, on_click=textBoxUpdateWithExample)
st.markdown(“### Your Email:”)
# Check if the user has provided input_text and proceed with email conversion
if input_text:
if not openai_api_key:
# If API Key is not provided, show warning
st.warning(
‘Please insert OpenAI API Key. Instructions [here](https://help.openai.com/en/articles/4936850-where-do-i-find-my-secret-api-key)’,
icon=”⚠️”)
st.stop()
llm = loadLanguageModel(api_key_openai=openai_api_key)
prompt_with_email = prompt.format(
tone=tone_drop_down,
dialect=dialect_drop_down,
email=input_text
)
formatted_email = llm(prompt_with_email)
st.write(formatted_email)
结论
在本文中,我们看到怎样使用OpenAI LLM和Langchain创建一个美观的Web利用程序。我们从安装和设置Streamlit开始。然后,我们创建了一个前端界面,以接收用户的输入,如语气、方言和电子邮件文本。以后,我们创建了一个有效的提示,使用这些输入查询语言模型。接下来,我们使用Langchain和OpenAI的API密钥初始化了OpenAI模型。最后,我们使用Streamlit将利用程序部署到Web上。
主要观点
使用Python中的Streamlit库,我们可以构建交互式的Web利用程序。
提示工程在从语言模型中检索出优化结果时相当重要。
使用OpenAI库和其密钥,我们可以轻松地将OpenAI LLM利用于我们的Python利用程序中。
使用Langchain的PromptTemplate,我们可以根据用户输入有效地格式化提示,进而用于查询LLM。
使用Streamlit Share,我们可以在Live URL中托管Python利用程序。
常见问题
问:Python中的Streamlit库的用处是甚么?
答:Streamlit是一个开源的Python库,可以用于创建具有简单Python函数的交互式Web利用程序,而无需广泛的Web开发知识。
问:怎样使用OpenAI创建一个利用程序?
答:首先,您需要选择利用程序开发技术堆栈,然后使用OpenAI秘密密钥利用OpenAI的优势。
问:我可使用ChatGPT撰写电子邮件吗?
答:是的,您可使用ChatGPT来撰写电子邮件。您可以通过提供具有清晰说明电子邮件期望的提示来生成电子邮件内容。
问:在LangChain中默许的OpenAI模型是甚么?
答:LangChain中使用的默许OpenAI模型是OpenAI GPT⑶.5-turbo。
问:我可以避不要钱使用OpenAI吗?
答:OpenAI提供不要钱和付费的服务。您可以获得有限数量的API要求,和不要钱服务的GPT⑶模型。通过付费版本,您可以取得更高的访问权限,和更多的API要求。
langchain set openai api key的常见问答Q&A
问题1:怎样在Python中设置LangChain的OpenAI密钥?
答案:要在Python中设置LangChain的OpenAI密钥,可以依照以下步骤操作:
- 首先,需要在OpenAI平台上创建一个账号,并登录。
- 登录后,点击右上角的个人资料图标,并选择“View API Keys”。
- 选择“Create new secret key”,将生成的密钥复制保存。
- 在Python代码中,使用openai库中的函数设置密钥:
openai.api_key = "你的密钥"
。
通过以上步骤,就能够在Python中成功设置LangChain的OpenAI密钥。
问题2:Langchain的快速入门指南是甚么?
答案:Langchain的快速入门指南以下:
- 首先,需要在OpenAI平台上创建一个账号,并获得OpenAI的API密钥。
- 通过pip安装openai库:
pip install openai
。 - 在Python代码中,引入openai库:
import openai
。 - 使用
openai.api_key
来设置API密钥。 - 利用Langchain与OpenAI模型进行交互,实现语言处理功能。
遵守以上指南,便可快速进入Langchain的使用。
问题3:Langchain的OpenAI要求使用”openai_api_key”进行设置吗?
答案:是的,Langchain要求使用”openai_api_key”进行OpenAI的设置。
在使用Langchain进行与OpenAI的交互进程中,需要设置API密钥,命名为”openai_api_key”。
通过将API密钥设置为”openai_api_key”,Langchain可以准确地辨认并使用OpenAI的功能。
…(其他问题的答案格式类似)