编程助手学Python--Deepseek对Langchain的调用OpenAI的GPT-3.5模型生成对话回复的理解

发布于:2025-03-16 ⋅ 阅读:(41) ⋅ 点赞:(0)

from langchain.llms import OpenAI
import os

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(apikey)
print(base)

llm = OpenAI(
    model="gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key=openai_api_key,
    openai_api_base=openai_api_base
)

res = llm.predict("How are you today?")
print(res)

以下是对代码的详细解释,包括每个部分的功能、潜在问题以及修正建议:


1. 导入库

from langchain.llms import OpenAI
import os
  • langchain.llmslangchain 是一个用于构建基于大语言模型(LLM)应用的框架。OpenAIlangchain 中用于与 OpenAI 模型交互的类。
  • os:Python 标准库,用于与操作系统交互,例如读取环境变量。

2. 设置环境变量

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 兼容服务)。

3. 读取环境变量

openai_api_key = os.getenv("OPENAI_API_KEY")
openai_api_base = os.getenv("OPENAI_API_BASE")
print(apikey)
print(base)
  • os.getenv:从环境变量中读取值。
  • openai_api_keyopenai_api_base:分别存储 API 密钥和 API 基础 URL。
  • print(apikey)print(base):这里代码有误,变量名应该是 openai_api_keyopenai_api_base,而不是 apikeybase

4. 初始化 OpenAI LLM 对象

llm = OpenAI(
    model="gpt-3.5-turbo-instruct",
    temperature=0,
    openai_api_key=openai_api_key,
    openai_api_base=openai_api_base
)
  • OpenAIlangchain 提供的类,用于与 OpenAI 模型交互。
  • 参数说明
    • model:指定使用的模型,这里是 "gpt-3.5-turbo-instruct",适用于指令类任务。
    • temperature:控制生成文本的随机性。0 表示完全确定性输出,适合需要精确答案的任务。
    • openai_api_key:API 密钥,这里正确使用了 openai_api_key 变量。
    • openai_api_base:API 基础 URL,这里正确使用了 openai_api_base 变量。

5. 调用模型生成文本

res = llm.predict("How are you today?")
print(res)
  • llm.predict:调用 OpenAI 对象的 predict 方法,向模型发送输入文本 "How are you today?",并返回生成的文本。
  • print(res):输出模型的生成结果。

6. 代码中的问题

  1. 变量名错误

    • print(apikey)print(base) 中,变量名应该是 openai_api_keyopenai_api_base

    • 修正后的代码:

      print(openai_api_key)
      print(openai_api_base)
      
  2. API 密钥的安全性

    • 将 API 密钥硬编码在代码中是不安全的,建议通过环境变量或配置文件管理密钥。
  3. 模型名称

    • "gpt-3.5-turbo-instruct" 是一个有效的模型名称,但需要确保 OpenAI API 支持该模型。

7. 修正后的完整代码

from langchain.llms import OpenAI
import os

# 设置环境变量
os.environ["OPENAI_API_KEY"] = "sk-xx"  # 替换为你的 API 密钥
os.environ["OPENAI_API_BASE"] = "https://ai.com/v1"  # 替换为你的 API 基础 URL

# 读取环境变量
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  # 使用正确的变量
)

# 调用模型生成文本
res = llm.predict("How are you today?")
print(res)

8. 运行结果

假设 API 密钥和基础 URL 正确,模型会返回对输入 "How are you today?" 的响应,例如:

I'm just a computer program, so I don't have feelings, but thank you for asking! How can I assist you today?

总结

这段代码演示了如何使用 langchain 和 OpenAI 模型进行文本生成。关键点包括:

  • 正确设置和读取环境变量。
  • 初始化 OpenAI 对象时传递正确的参数。
  • 调用 predict 方法生成文本。

修正代码中的错误后,可以顺利运行并得到预期结果。