
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.schema import BaseOutputParser
import os
class CommaSeparatedListOutPutParser(BaseOutputParser):
def parse(self, text:str):
print(text)
return text.strip().split(",")
os.environ["OPENAI_API_KEY"] = "sk-xx"
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE")
print(OPENAI_API_KEY)
print(OPENAI_API_BASE)
llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0,
openai_api_key=OPENAI_API_KEY,
openai_api_base=OPENAI_API_BASE
)
prompt = PromptTemplate.from_template("你是一名起名老师,你的客户是一位新生儿的父母,他们想要给自己的孩子起一个名字。请你为他们提供{num}个名字,请返回以逗号分隔的列表形式。仅返回逗号分隔的列表,不要返回其他内容。")
message = prompt.format(num=5)
res = llm.predict(message)
print(res) 详细解释
以下是对代码的详细解释,包括每个部分的功能、实现逻辑以及代码的作用:
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.schema import BaseOutputParser
import os
langchain.llms
:
langchain
是一个用于构建基于大语言模型(LLM)应用的框架。
OpenAI
是
langchain
中用于与 OpenAI 模型交互的类。langchain.prompts
:提供了
PromptTemplate
类,用于创建和管理提示模板。langchain.schema
:提供了
BaseOutputParser
类,用于解析模型输出。os
:Python 标准库,用于与操作系统交互,例如读取环境变量。class CommaSeparatedListOutPutParser(BaseOutputParser):
def parse(self, text: str):
print(text)
return text.strip().split(",")
CommaSeparatedListOutPutParser
:自定义的输出解析器,继承自
BaseOutputParser
。parse
方法
:
text
(字符串)。os.environ["OPENAI_API_KEY"] = "sk-xx"
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
os.environ
:用于设置或读取环境变量。OPENAI_API_KEY
:OpenAI API 的密钥,用于身份验证。
"sk-xx"
是示例密钥,实际使用时需要替换为有效的 API 密钥。OPENAI_API_BASE
:OpenAI API 的基础 URL。这里设置为
"https://ai.com/v1"
,可能是自定义的 API 端点(例如,使用代理或本地部署的 OpenAI 兼容服务)。OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE")
print(OPENAI_API_KEY)
print(OPENAI_API_BASE)
os.getenv
:从环境变量中读取值。OPENAI_API_KEY
和
OPENAI_API_BASE
:分别存储 API 密钥和 API 基础 URL。print
:输出这两个变量的值,用于调试或验证。llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0,
openai_api_key=OPENAI_API_KEY,
openai_api_base=OPENAI_API_BASE
)
OpenAI
:
langchain
提供的类,用于与 OpenAI 模型交互。model
:指定使用的模型,这里是
"gpt-3.5-turbo-instruct"
,适用于指令类任务。temperature
:控制生成文本的随机性。
0
表示完全确定性输出,适合需要精确答案的任务。openai_api_key
:API 密钥,这里正确使用了
OPENAI_API_KEY
变量。openai_api_base
:API 基础 URL,这里正确使用了
OPENAI_API_BASE
变量。prompt = PromptTemplate.from_template("你是一名起名老师,你的客户是一位新生儿的父母,他们想要给自己的孩子起一个名字。请你为他们提供{num}个名字,请返回以逗号分隔的列表形式。仅返回逗号分隔的列表,不要返回其他内容。")
message = prompt.format(num=5)
PromptTemplate.from_template
:创建一个提示模板,模板中包含一个占位符
{num}
。prompt.format(num=5)
:将占位符
{num}
替换为
5
,生成最终的提示文本。res = llm.predict(message)
print(res)
llm.predict
:调用
OpenAI
对象的
predict
方法,向模型发送提示文本,并返回生成的文本。print(res)
:输出模型的生成结果。假设模型返回的结果是:
张伟,李娜,王芳,刘洋,赵敏
输出将是:
张伟,李娜,王芳,刘洋,赵敏
PromptTemplate
创建动态提示。llm.predict
调用模型生成文本。错误处理 :
在调用模型时,可以添加错误处理逻辑,防止因网络问题或 API 调用失败而导致程序崩溃。
示例:
try:
res = llm.predict(message)
except Exception as e:
print("模型调用失败:", e)
res = ""
安全性 :
扩展性 :
from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.schema import BaseOutputParser
import os
class CommaSeparatedListOutPutParser(BaseOutputParser):
def parse(self, text: str):
print("模型输出:", text)
return text.strip().split(",")
# 设置环境变量
os.environ["OPENAI_API_KEY"] = "sk-xx"
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"
# 读取环境变量
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
OPENAI_API_BASE = os.getenv("OPENAI_API_BASE")
print("API Key:", OPENAI_API_KEY)
print("API Base:", OPENAI_API_BASE)
# 初始化 OpenAI LLM 对象
llm = OpenAI(
model="gpt-3.5-turbo-instruct",
temperature=0,
openai_api_key=OPENAI_API_KEY,
openai_api_base=OPENAI_API_BASE
)
# 创建提示模板并生成提示
prompt = PromptTemplate.from_template(
"你是一名起名老师,你的客户是一位新生儿的父母,他们想要给自己的孩子起一个名字。请你为他们提供{num}个名字,请返回以逗号分隔的列表形式。仅返回逗号分隔的列表,不要返回其他内容。"
)
message = prompt.format(num=5)
# 调用模型生成文本
try:
res = llm.predict(message)
print("模型生成结果:", res)
except Exception as e:
print("模型调用失败:", e)
res = ""
