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

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

环境准备

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

1. python-dotenv

概述

python-dotenv 是一个用于加载环境变量的 Python 库。它允许开发者将环境变量存储在 .env 文件中,并在运行时将这些变量加载到 Python 的环境中。这对于管理应用程序的配置非常有用,尤其是在开发和生产环境中。

主要功能
  • 加载环境变量:从 .env 文件中读取环境变量并将其添加到 os.environ 中。
  • 支持多种格式:支持标准的 .env 文件格式,可以使用键值对的形式定义变量。
  • 方便的配置管理:可以将敏感信息(如 API 密钥、数据库密码等)与代码分离,增强安全性。
使用示例

首先,安装 python-dotenv

pip python-dotenv

然后,可以在项目根目录下创建一个 .env 文件,内容如下:

DATABASE_URL=postgres://user:password@localhost/dbname
SECRET_KEY=mysecretkey

在 Python 代码中加载这些环境变量:

import os
from dotenv import load_dotenv

# 加载 .env 文件中的环境变量
_dotenv()

# 访问环境变量
database_url = os.getenv("DATABASE_URL")
secret_key = os.getenv("SECRET_KEY")

print(database_url)
print(secret_key)

2 zhipuai

概述

zhipuai 是一个用于与 Zhipu AI 平台进行交互的 Python 库。Zhipu AI 是一个提供自然语言处理(NLP)和人工智能(AI)服务的平台,用户可以通过该库调用其 API 进行文本生成、对话系统、文本分析等功能。

主要功能
  • 文本生成:可以生成自然语言文本,适用于内容创作、对话生成等场景。
  • 对话系统:支持构建聊天机器人和对话系统。
  • 文本分析:提供文本分类、情感分析等功能。
使用示例

首先,安装 zhipuai

pip install zhipuai

然后,可以使用该库与 Zhipu AI API 进行交互。以下是一个简单的示例:

from zhipuai import ZhipuAI

# 初始化 ZhipuAI 客户端
client = ZhipuAI(api_key='your_api_key')

# 生成文本
response = client.generate_text(prompt="今天天气怎么样?")
print(response)
  • python-dotenv 是一个用于管理环境变量的工具,适合用于配置管理和安全性增强。
  • zhipuai 是一个与 Zhipu AI 平台交互的库,适用于自然语言处理和人工智能应用。

这两个库在 Python 开发中各自发挥着重要的作用,帮助开发者更高效地管理配置和实现 AI 功能。

1. 安装必要的依赖

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

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

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

API_key=your_zhipuai_api_key_here

apikey 在智谱AI官网新建生成即可
在这里插入图片描述

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. 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())

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

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

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

运行主程序

if __name__ == "__main__":
    message = get_completion("hello,你是谁呀")
    print(message)

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

在这里插入图片描述

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐