大模型入门到实战——基于智谱API key 调用大模型文本生成
在使用任何 API 前,通常需要提供一个 API 密钥。在我们的示例中,我们将使用。: 这个函数用于向 GLM 模型发送请求,并获取生成的文本结果。通过指定模型和其他参数,可以控制生成的文本质量和风格。在这个博客中,我将带你了解如何通过 Python 脚本调用 ZhipuAI 的 GLM 模型来生成文本。它接收用户输入的提示词,并将其格式化为模型理解的形式。加载后,环境变量(如 API 密钥)会被
基于 ZhipuAI 实现文本生成的基本指南
在这个博客中,我将带你了解如何通过 Python 脚本调用 ZhipuAI 的 GLM 模型来生成文本。我们将使用 dotenv
来管理 API 密钥,并介绍如何构建和发送请求以获取模型的响应。
环境准备
在使用任何 API 前,通常需要提供一个 API 密钥。这是为了确保只有经过授权的用户可以访问 API 服务。在我们的示例中,我们将使用 .env
文件来存储 API 密钥,并使用 python-dotenv
来加载这些环境变量。
python-dotenv
和 zhipuai
是两个 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,你是谁呀"
,然后打印出模型返回的响应。这部分代码是脚本的入口点,用于实际执行调用和展示结果。
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)