zhipuai
zhipuai.Rmd
生成批处理任务
使用 zhipuai_batch_build()
函数生成批处理任务。可以分别指定模型(model
)、系统提示词(system_prompt
)、请求ID(request_id
)、用户提示词(user_prompt
)等参数。如果用户提示词为空,则自动将传入的数据放到用户提示词中。
每个数据生成一个请求,写入文件中时,一行一个请求。
# 生成批处理任务
data = list(
question1 = "你好",
question2 = "你叫什么名字?",
question3 = "你今年几岁?"
)
list = lapply(seq_along(data), function(i) {
request_id = names(data)[i]
zhipuai_batch_build(
data[[i]],
request_id = request_id,
model = "glm-4-flash",
system_prompt = "请用温柔的语气回复我"
)
})
temp_file <- tempfile(fileext = ".jsonl")
writeLines(unlist(list), temp_file)
提交批处理任务
提交批处理任务分为 2 步。
- 上传文件到服务器:这一步调用
zhipuai_file_upload()
函数,返回文件ID。 - 使用服务器中的文件创建批处理任务:这一步调用
zhipuai_batch_create()
函数,返回批处理任务ID。
file_id = zhipuai_file_upload(temp_file)
batch_id = zhipuai_batch_create(file_id)
说明:提交任务需要用到 API
密钥,请确保已经设置环境变量 ZHIPUAI_API_KEY
。
查询批处理任务状态
使用 zhipuai_batch_status_get()
函数查询批处理任务状态。返回的数据结构包含任务的完整信息,包括:
返回的数据结构包含以下字段(部分):
-
id
: 批处理任务的唯一标识符 -
object
: 对象类型,固定为”batch” -
endpoint
: API 端点,表示任务类型 -
input_file_id
: 输入文件的ID -
status
: 任务状态,可能的值包括:- validating: 验证中
- in_progress: 处理中
- completed: 已完成
- failed: 失败
- expired: 已过期
- cancelled: 已取消
-
output_file_id
: 输出文件的ID -
error_file_id
: 错误文件的ID -
created_at
: 创建时间戳 -
in_progress_at
: 开始处理时间 -
request_counts
: 请求统计信息- total: 总请求数
- completed: 已完成数
- failed: 失败数
-
metadata
: 元数据- description: 任务描述(用户自定义的说明)
例如:
batch_status = zhipuai_batch_status_get(batch_id)
batch_status
使用 zhipuai_batch_status_check()
函数持续检测批处理任务状态。待任务完成后,会返回任务结果的文件 URL。
batch_result = zhipuai_batch_status_check(batch_id, interval = 5, timeout = 600)
batch_result
下载批处理任务结果
result_file_path <- file.path(temp_dir, "batch_result.jsonl")
zhipuai_file_download(batch_result$output, result_file_path)
解析批处理任务结果
对于不同的任务(或模型),智谱 AI 返回的结果格式不同。因此,需要根据任务类型(或模型)选择不同的解析函数。
聊天任务
# 可以正常解析的结果
file_path = system.file("extdata", "zhipuai-batch-chat-result-output.jsonl", package = "cailab.utils")
lines <- readLines(file_path, encoding = "UTF-8")
lapply(lines, zhipuai_result_chat_parser) |>
dplyr::bind_rows()
#> # A tibble: 4 × 11
#> custom_id summary microorganisms research_field keywords synthetic_community
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 WOS:000226… "本研… Fusarium culm… 农业生产、植… 脱氧雪… 无
#> 2 WOS:A1986E… "本研… Helminthospor… 植物健康 3-羟基… 无
#> 3 WOS:000073… "研究… 无 理论研究 立体异… 无
#> 4 WOS:A1960W… "本研… Fusarium oxys… 植物健康 Fusariu… 无
#> # ℹ 5 more variables: strain_composition <chr>, species_number <chr>,
#> # application_effect <chr>, key_evidence <chr>, evidence_translation <chr>
zhipuai_batch_results_parse(file_path, type = "chat")
#> # A tibble: 4 × 11
#> custom_id summary microorganisms research_field keywords synthetic_community
#> <chr> <chr> <chr> <chr> <chr> <chr>
#> 1 WOS:000226… "本研… Fusarium culm… 农业生产、植… 脱氧雪… 无
#> 2 WOS:A1986E… "本研… Helminthospor… 植物健康 3-羟基… 无
#> 3 WOS:000073… "研究… 无 理论研究 立体异… 无
#> 4 WOS:A1960W… "本研… Fusarium oxys… 植物健康 Fusariu… 无
#> # ℹ 5 more variables: strain_composition <chr>, species_number <chr>,
#> # application_effect <chr>, key_evidence <chr>, evidence_translation <chr>