基于 ZhipuAI 实现文本生成的基本指南

在这个博客中,我将带你了解如何通过 Python 脚本调用 ZhipuAI 的 GLM 模型来生成文本。我们将使用 dotenv 来管理 API 密钥,并介绍如何构建和发送请求以获取模型的响应。

环境准备

在使用任何 API 前,通常需要提供一个 API 密钥。这是为了确保只有经过授权的用户可以访问 API 服务。在我们的示例中,我们将使用 .env 文件来存储 API 密钥,并使用 python-dotenv 来加载这些环境变量。

1. 安装必要的依赖

首先,确保安装了必要的 Python 包:

pip install python-dotenv zhipuai
  • 1.
2. 设置 .env 文件

在项目根目录下创建一个 .env 文件,并添加你的 API 密钥:

API_key=your_zhipuai_api_key_here
  • 1.

apikey 在 智谱AI官网新建生成即可

大模型入门到实战——基于智谱API key 调用大模型文本生成_API

3. Python 脚本
import os
from dotenv import load_dotenv, find_dotenv
from zhipuai import ZhipuAI

# 加载环境变量
_ = load_dotenv(find_dotenv())

# 创建 ZhipuAI 客户端实例
client = ZhipuAI(
    api_key=os.environ["API_key"]
)

def gen_glm_params(prompt):
    """
    构造 GLM 模型请求参数 messages

    请求参数:
        prompt: 用户输入的提示词
    """
    messages = [{"role": "user", "content": prompt}]
    return messages

def get_completion(prompt, model="glm-3-turbo", temperature=0.95):
    """
    获取 GLM 模型生成的文本

    请求参数:
        prompt: 用户输入的提示词
        model: 使用的模型,默认是 glm-3-turbo
        temperature: 控制输出的随机程度,温度系数越低,输出内容越一致
    """
    messages = gen_glm_params(prompt)
    response = client.chat.completions.create(
        model=model,
        messages=messages,
        temperature=temperature
    )
    if len(response.choices) > 0:
        return response.choices[0].message.content
    return "generate answer error"

if __name__ == "__main__":
    message = get_completion("hello,你是谁呀")
    print(message)
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
1. gen_glm_params(prompt)

描述: 这个函数用于生成 GLM 模型所需的请求参数。它接收用户输入的提示词,并将其格式化为模型理解的形式。

参数:

  • prompt (str): 用户输入的提示词。这是一个字符串,代表用户希望模型生成内容的起点。例如,输入 "hello,你是谁呀" 来让模型介绍自己。

返回值:

  • messages (list of dict): 返回一个包含用户输入提示词的列表,符合 GLM 模型的消息格式要求。具体格式为:[{"role": "user", "content": prompt}],这里的 role 指定了消息的角色(在这种情况下是“用户”),content 是实际的提示词内容。
2. get_completion(prompt, model="glm-3-turbo", temperature=0.95)

描述: 这个函数用于向 GLM 模型发送请求,并获取生成的文本结果。通过指定模型和其他参数,可以控制生成的文本质量和风格。

参数:

  • prompt (str): 用户输入的提示词,用于引导模型生成响应。例如,输入一个问题或者一个句子片段。
  • model (str, optional): 指定调用的模型名称。默认值为 "glm-3-turbo",这是一个版本较新的、速度更快的 GLM 模型。你可以根据需求选择其他模型,如 "glm-4" 等。
  • temperature (float, optional): 控制输出的随机性。取值范围是 0 到 1.0。较低的温度值(例如 0.1)会使输出更加一致和确定,而较高的温度值(例如 0.95)会使输出更加多样和有创意。默认为 0.95,提供适度的随机性。

返回值:

  • str: 返回模型生成的文本内容。如果模型生成成功且有内容返回,则返回生成的文本;如果没有生成内容或发生错误,则返回 "generate answer error"
示例代码中的其他部分
加载环境变量
_ = load_dotenv(find_dotenv())
  • 1.

这行代码使用 load_dotenv() 函数来加载 .env 文件中的环境变量。find_dotenv() 会自动查找 .env 文件的位置。加载后,环境变量(如 API 密钥)会被加入到当前的环境中,可以通过 os.environ 访问。

创建 ZhipuAI 客户端实例
client = ZhipuAI(
    api_key=os.environ["API_key"]
)
  • 1.
  • 2.
  • 3.

这部分代码使用从环境变量中获取的 API 密钥来实例化 ZhipuAI 客户端。API 密钥是访问 ZhipuAI 服务所必须的授权令牌。

运行主程序
if __name__ == "__main__":
    message = get_completion("hello,你是谁呀")
    print(message)
  • 1.
  • 2.
  • 3.

在主程序部分,我们调用 get_completion 函数,传入提示词 "hello,你是谁呀",然后打印出模型返回的响应。这部分代码是脚本的入口点,用于实际执行调用和展示结果。

大模型入门到实战——基于智谱API key 调用大模型文本生成_环境变量_02