API调用示例

更新时间:2025-04-08 09:46:34

本文为您介绍裁判员模型单次调用和批量调用的示例。

前提条件

  • 已开通裁判员模型功能。具体操作,请参见开通服务及在线体验

  • 已在裁判员模型页面获取在线调用参数HostToken,并使用Host拼接成访问地址,通过该地址调用裁判员模型进行模型评测。

    访问地址如下:

    调用场景

    功能

    BASE_URL/endpoint

    调用场景

    功能

    BASE_URL/endpoint

    通过Python SDK调用裁判员模型

    https://aiservice.cn-hangzhou.aliyuncs.com/v1

    通过HTTP调用裁判员模型

    Chat Completions

    https://aiservice.cn-hangzhou.aliyuncs.com/v1/chat/completions

    Files

    https://aiservice.cn-hangzhou.aliyuncs.com/v1/files

    Batch

    https://aiservice.cn-hangzhou.aliyuncs.com/v1/batches

模型列表

目前裁判员模型支持的模型列表如下:

模型名称

模型介绍

上下文长度

最大输入

最大输出

模型名称

模型介绍

上下文长度

最大输入

最大输出

裁判员模型-标准版(pai-judge)

模型规模较小,性价比更高。

32768

32768

32768

裁判员模型-高级版(pai-judge-plus)

模型规模较大,推理效果更好。

32768

32768

32768

单次调用(在线调用)

裁判员模型支持单模型评测双模型竞技两种评测模式,如果不满足您的业务需求,可以使用自定义模板

详细的参数说明,请参见输入参数返回参数

单模型评测

单模型评测指评估单一大语言模型的回答质量。

  1. 请求示例

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        completion = client.chat.completions.create(
            model='pai-judge',
            messages=[
                {
                    "role": "user",
                    "content": [
                        {
                            "mode": "single",
                            "type": "json",
                            "json": {
                                "question": "请给出\"常德德山山有德\"对应的下联",
                                "answer": "长沙沙水水无沙"
                            }
                        }
                    ]
                }
            ]
        )
        print(completion.model_dump())
    
    if __name__ == '__main__':
        main() 
    $ curl -X POST https://aiservice.cn-hangzhou.aliyuncs.com/v1/chat/completions \
      -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "pai-judge",
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "mode": "single",
                        "type": "json",
                        "json": {
                            "question": "请给出\"常德德山山有德\"对应的下联",
                            "answer": "长沙沙水水无沙"
                        }
                    }
                ]
            }
        ]
    }'
  2. 返回结果

    {
      "id": "73d74ed7-1a94-4eac-b67b-14b9a5e20b35",
      "object": "chat.completion",
      "created": 1633389,
      "model": "pai-judge",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "我认为该回复的综合评分为[[3]],理由如下。\n当前回复的优点:\n1. 准确性:回复正确地给出了“常德德山山有德”的下联“长沙沙水水无沙”,这显示了回复在处理对联方面具有一定的准确性。[[4]]\n2. 相关性:回复直接针对用户的问题,提供了一个简洁明了的答案,没有偏离主题。[[4]]\n\n当前回复的不足:\n1. 完整性:虽然回复给出了一个看似正确的下联,但没有提供任何关于如何得出这一下联的背景信息或解释。对于不熟悉对联知识的用户来说,缺乏解释可能会影响理解。[[3]]\n2. 清晰度和结构:回复的结构相对简单,但由于缺乏解释,其教育意义和用户理解度的提升空间有限。[[3]]\n3. 适应用户水平:回复没有考虑到用户可能对联的创作或推理过程不甚了解,未能提供足够的背景信息来帮助用户理解。[[3]]\n\n综上所述,虽然回复在准确性和相关性方面表现不错,但在完整性、清晰度和结构以及适应用户水平方面存在不足。因此,综合评分为3。\n",
            "refusal": "",
            "function_call": null,
            "tool_calls": null},
          "finish_reason": "stop",
          "logprobs": null
        }
      ],
      "usage": {
        "prompt_tokens": 790,
        "completion_tokens": 257,
        "total_tokens": 1047
      },
      "system_fingerprint": "",
      "service_tier": ""
    }

双模型竞技

双模型竞技指评估两个大语言模型对相同问题的回答质量。

  1. 请求示例

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        completion = client.chat.completions.create(
            model='pai-judge',
            messages=[
                {
                    "role": "user",
                    "content": [
                        {
                            "mode": "pairwise",
                            "type": "json",
                            "json": {
                                "question": "请给出\"常德德山山有德\"对应的下联",
                                "answer1": "长沙沙水水无沙",
                                "answer2": "常德人德德山山高"
                            }
                        }
                    ]
                }
            ]
        )
        print(completion.model_dump())
    
    
    if __name__ == '__main__':
        main()
    $ curl -X POST https://aiservice.cn-hangzhou.aliyuncs.com/v1/chat/completions \
      -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "pai-judge",
        "messages": [
            {
                "role": "user",
                "content": [
                    {
                        "role": "user",
                        "content": [
                            {
                                "mode": "pairwise",
                                "type": "json",
                                "json": {
                                    "question": "请给出\"常德德山山有德\"对应的下联",
                                    "answer1": "长沙沙水水无沙",
                                    "answer2": "常德人德德山山高"
                                }
                            }
                        ]
                    }
                ]
            }
        ]
    }'
  2. 返回结果

    {
      "id": "97882e65-92ee-4401-be78-d8d87ad41874",
      "object": "chat.completion",
      "created": 1633646,
      "model": "pai-judge",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "我认为[[回复1更好]],其中回复1的综合评分为[[4]],回复2的综合评分为[[2]],理由如下:\n1. 准确性:回复1“长沙沙水水无沙”与原文“常德德山山有德”形成了一种对仗,虽然“有德”与“无沙”在字面上的直接对应略显生硬,但整体上保持了意境的连贯性,因此得分为[[4]]。回复2“常德人德德山山高”则在文化内涵和对仗上显得不那么契合,特别是在“人德”与“山高”之间的联系较为模糊,因此得分为[[2]]。\n2. 相关性:回复1直接针对用户的问题提供了一副对联,虽然对仗有所欠缺,但仍然与用户指令高度相关。回复2虽然也尝试提供对联,但内容上与原句的关联较弱,相关性较低,因此回复1得分为[[4]],回复2得分为[[2]]。\n3. 完整性:回复1虽然在对仗上有所欠缺,但整体上提供了一个完整的对联,符合用户指令的要求。回复2的对联在文化内涵和逻辑连贯性上存在问题,因此得分为[[2]],而回复1得分为[[4]]。\n4. 清晰度和结构:两个回复在结构上都较为清晰,但回复1在连贯性和逻辑性上表现更好,因此得分为[[4]];回复2由于内容不太适合作为对联,使得其结构显得些许杂乱,因此得分为[[2]]。\n5. 无害性:两个回复都没有包含任何冒犯性内容,因此在这一标准上都得分为[[5]]。\n\n综上所述,回复1在多个关键标凈上表现更好,尤其是在准确性和相关性上,因此整体评分较高。回复2虽然没有包含不适当内容,但在应对用户指令的准确性、相关性和完整性上表现较差,因此整体评分较低。\n",
            "refusal": "",
            "function_call": null,
            "tool_calls": null},
          "finish_reason": "stop",
          "logprobs": null
        }
      ],
      "usage": {
        "prompt_tokens": 823,
        "completion_tokens": 438,
        "total_tokens": 1261
      },
      "system_fingerprint": "",
      "service_tier": ""
    }

自定义模板

使用上述示例调用裁判员模型后,系统会生成对应的提示词模板,如果该模板不能满足您的需求,您可以自定义评测模板(本文以双模型竞技为例)。

  1. 请求示例

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
    
        system = "请作为一名公正的裁判,评价人工智能助手对下面用户问题的回答质量。\n\n" \
            "以下是这些人工智能助手的基本性格描述:\n" \
            "不会对人进行评价或比较,不会做任何伤害人类的事情。性格上偏向于独立自主的人格。\n"
        user = \
            "请对以下问题-回答按照1-5分进行打分:\n" \
            "问题: 你认为社交媒体对人际关系的影响是什么?\n" \
            "回复:社交媒体使得人们可以更轻松地联系,但也可能导致疏远。\n" \
            "评分标准:\n" \
            "1分: 回复完全不相关、无内容或者完全错误。\n" \
            "2分: 回复有一些相关性,但内容肤浅或过于简略。\n" \
            "3分: 回复相关,提供了一些见解,但缺乏深入分析。\n" \
            "4分: 回复相关且有深度,提供了清晰的见解和例证。\n" \
            "5分: 回复非常相关且深刻,提供了全面的观点和丰富的例证。"
    
        completion = client.chat.completions.create(
            model='pai-judge',
            messages=[
                {"role": "system", "content": system},
                {"role": "user", "content": user}
            ]
        )
        print(completion.model_dump())
    
    
    if __name__ == '__main__':
        main()
    $ curl -X POST https://aiservice.cn-hangzhou.aliyuncs.com/v1/chat/completions \
      -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "pai-judge",
        "messages": [
            {
                "role": "user",
                "content": [
                    {"role": "system", "content": "请作为一名公正的裁判,评价人工智能助手对下面用户问题的回答质量。\n\n以下是这些人工智能助手的基本性格描述:\n不会对人进行评价或比较,不会做任何伤害人类的事情。性格上偏向于独立自主的人格。\n"},
                    {
                      "role": "user", 
                      "content": 
                          "请对以下问题-回答按照1-5分进行打分:\n"
                          "问题: 你认为社交媒体对人际关系的影响是什么?\n"
                          "回复:社交媒体使得人们可以更轻松地联系,但也可能导致疏远。\n"
                          "评分标准:\n"
                          "1分: 回复完全不相关、无内容或者完全错误。\n"
                          "2分: 回复有一些相关性,但内容肤浅或过于简略。\n"
                          "3分: 回复相关,提供了一些见解,但缺乏深入分析。\n"
                          "4分: 回复相关且有深度,提供了清晰的见解和例证。\n"
                          "5分: 回复非常相关且深刻,提供了全面的观点和丰富的例证。"
                    }
                ]
            }
        ]
    }'
  2. 返回结果

    {
      "id": "e2f72777-ddf5-4ff8-b7dd-4ecefd6e4014",
      "object": "chat.completion",
      "created": 1153092,
      "model": "pai-judge",
      "choices": [
        {
          "index": 0,
          "message": {
            "role": "assistant",
            "content": "根据提供的评分标准,我会给这个回答打3分。回复“社交媒体使得人们可以更轻松地联系,但也可能导致疏远。”相关性是明确的,直接针对了社交媒体对人际关系的影响。它提到了两个相反的效果:增强联系和导致疏远,这展现了一定的见解。然而,这个回答相对简短,没有进一步展开这两个方面的具体影响或提供实例来支持其观点,因此缺乏深入分析。所以,根据标准,它达到了3分的标准,相关且提供了一些见解,但没有更深层次的探讨。",
            "refusal": "",
            "function_call": null,
            "tool_calls": null},
          "finish_reason": "stop",
          "logprobs": null
        }
      ],
      "usage": {
        "prompt_tokens": 910,
        "completion_tokens": 411,
        "total_tokens": 1321
      },
      "system_fingerprint": "",
      "service_tier": ""
    }

批量调用(离线调用)

步骤一:准备批量数据

批量数据文件需满足以下条件:

  • 单个文件最大不超过10 MB,文件较大可拆分为多个文件上传。

  • 一个账号上传的所有文件大小总和不超过100 GB。

  • 批量处理的API文件格式为.jsonl文件。

    其中,每一行包含对API单个请求的详细信息,每行正文字段中的参数必须包含body和唯一的custom_id值。body支持的参数请参见输入参数

  • 文件格式请参考:

    {"custom_id": "request-1", "body": {"model": "pai-judge", "messages": [{"role": "user", "content": [{"mode": "single", "type": "json", "json": {"question": "请给出\"常德德山山有德\"对应的下联", "answer": "长沙沙水水无沙"}}]}]}}
    {"custom_id": "request-2", "body": {"model": "pai-judge-plus", "messages": [{"role": "user", "content": [{"mode": "single", "type": "json", "json": {"question": "请给出\"常德德山山有德\"对应的下联", "answer": "长沙沙水水无沙"}}]}]}}

步骤二:上传批量数据

通过裁判员模型上传数据接口,将批量数据上传至服务端,获取唯一的file_id值。

  1. 请求示例。

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        upload_files = client.files.create(
            file=open("/home/xxx/input.jsonl", "rb"),
            purpose="batch",
        )
        print(upload_files.model_dump_json(indent=4))
    
    
    if __name__ == '__main__':
        main()
    $ curl -XPOST https://aiservice.cn-hangzhou.aliyuncs.com/v1/files \
      -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" \
      -F purpose="batch"  \
      -F file="@/home/xxx/input.jsonl"
  2. 返回结果。

    {
        "id": "file-batch-EC043540BE1C7BE3F9F2F0A8F47D1713",
        "object": "file",
        "bytes": 698,
        "created_at": 1742454203,
        "filename": "input.jsonl",
        "purpose": "batch"
    }

步骤三:创建批量任务

上传文件后,使用输入文件的file_id创建批量任务。

本文假设file_idfile-batch-EC043540BE1C7BE3F9F2F0A8F47D1713。目前,完成窗口只能设置为24小时,创建成功后会返回唯一的batch_id值。

  1. 请求示例。

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        create_batches = client.batches.create(
            endpoint="/v1/chat/completions",
            input_file_id="file-batch-EC043540BE1C7BE3F9F2F0A8F47D1713",
            completion_window="24h",
        )
        print(create_batches.model_dump_json(indent=4))
    
    
    if __name__ == '__main__':
        main()
    $ curl -XPOST https://aiservice.cn-hangzhou.aliyuncs.com/v1/batches \ 
        -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" \
        -d '{
            "input_file_id": "file-batch-EC043540BE1C7BE3F9F2F0A8F47D1713",
            "endpoint": "/v1/chat/completions",
            "completion_window": "24h"
     }'
  2. 返回结果。

    {
        "id": "batch_66f245a0-88d1-458c-8e1c-a819a5943022",
        "object": "batch",
        "endpoint": "/v1/chat/completions",
        "errors": null,
        "input_file_id": "file-batch-EC043540BE1C7BE3F9F2F0A8F47D1713",
        "completion_window": "24h",
        "status": "Creating",
        "output_file_id": null,
        "error_file_id": null,
        "created_at": 1742455213,
        "in_process_at": null,
        "expires_at": null,
        "FinalizingAt": null,
        "completed_at": null,
        "failed_at": null,
        "expired_at": null,
        "cancelling_at": null,
        "cancelled_at": null,
        "request_counts": {
            "total": 3,
            "completed": 0,
            "failed": 0
        },
        "metadata": null
    }

步骤四:查看任务状态

通过batch_id查询任务的运行状态,当运行状态为Succeeded后,返回的response会包含生成的文件ID:output_file_id

  1. 请求示例。

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "http://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        retrieve_batches = client.batches.retrieve(
            batch_id="batch_66f245a0-88d1-458c-8e1c-a819a5943022",
        )
        print(retrieve_batches.model_dump_json(indent=4))
    
    
    if __name__ == '__main__':
        main()
    $ curl -XGET https://aiservice.cn-hangzhou.aliyuncs.com/v1/batches/batch_66f245a0-88d1-458c-8e1c-a819a5943022 \
        -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}"
  2. 返回结果。

    批量任务对象说明

    {
        "id": "batch_66f245a0-88d1-458c-8e1c-a819a5943022",
        "object": "batch",
        "endpoint": "/v1/chat/completions",
        "errors": null,
        "input_file_id": "file-batch-EC043540BE1C7BE3F9F2F0A8F47D1713",
        "completion_window": "24h",
        "status": "Succeeded",
        "output_file_id": "file-batch_output-66f245a0-88d1-458c-8e1c-a819a5943022",
        "error_file_id": null,
        "created_at": 1742455213,
        "in_process_at": 1742455640,
        "expires_at": 1742455640,
        "FinalizingAt": 1742455889,
        "completed_at": 1742455889,
        "failed_at": null,
        "expired_at": null,
        "cancelling_at": null,
        "cancelled_at": null,
        "request_counts": {
            "total": 3,
            "completed": 3,
            "failed": 0
        },
        "metadata": null
    }

步骤五:获取任务结果

通过output_file_id查询并下载生成文件内容。

  1. 请求示例。

    Python
    curl
    import os
    from openai import OpenAI
    
    
    def main():
        base_url = "https://aiservice.cn-hangzhou.aliyuncs.com/v1"
        judge_model_token = os.getenv("JUDGE_MODEL_TOKEN")
    
        client = OpenAI(
            api_key=f'Authorization: Bearer {judge_model_token}',
            base_url=base_url
        )
        content_files = client.files.content(
            file_id="file-batch_output-66f245a0-88d1-458c-8e1c-a819a5943022",
        )
        print(content_files)
    
    
    if __name__ == '__main__':
        main()
    $ curl -XGET https://aiservice.cn-hangzhou.aliyuncs.com/v1/files/file-batch_output-66f245a0-88d1-458c-8e1c-a819a5943022/content \
        -H "Authorization: Bearer ${JUDGE_MODEL_TOKEN}" > output.jsonl
  2. 返回结果。

    {"id":"dcee3584-6f30-9541-a855-873a6d86b7d9","custom_id":"request-1","response":{"status_code":200,"request_id":"dcee3584-6f30-9541-a855-873a6d86b7d9","body":{"created":1737446797,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"pai-judge","id":"chatcmpl-dcee3584-6f30-9541-a855-873a6d86b7d9","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}
    {"id":"dcee3584-6f30-9541-a855-873a6d86b7d9","custom_id":"request-2","response":{"status_code":200,"request_id":"dcee3584-6f30-9541-a855-873a6d86b7d9","body":{"created":1737446797,"usage":{"completion_tokens":7,"prompt_tokens":26,"total_tokens":33},"model":"pai-judge-plus","id":"chatcmpl-dcee3584-6f30-9541-a855-873a6d86b7d9","choices":[{"finish_reason":"stop","index":0,"message":{"content":"2+2 equals 4."}}],"object":"chat.completion"}},"error":null}
  • 本页导读 (1)
  • 前提条件
  • 模型列表
  • 单次调用(在线调用)
  • 单模型评测
  • 双模型竞技
  • 自定义模板
  • 批量调用(离线调用)
  • 步骤一:准备批量数据
  • 步骤二:上传批量数据
  • 步骤三:创建批量任务
  • 步骤四:查看任务状态
  • 步骤五:获取任务结果
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等