znt/module/ai/test/model/parsechatresponse.php

64 lines
3.1 KiB
PHP
Executable file
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env php
<?php
/**
title=测试 aiModel::parseChatResponse();
timeout=0
cid=15058
- 执行aiTest模块的parseChatResponseTest方法参数是$ernieResponse @这是文心一言的回复消息
- 执行aiTest模块的parseChatResponseTest方法参数是$openaiResponse @Hello! How can I help you today?
- 执行aiTest模块的parseChatResponseTest方法参数是$failResponse @0
- 执行aiTest模块的parseChatResponseTest方法参数是$ernieNoResultResponse @0
- 执行aiTest模块的parseChatResponseTest方法参数是$openaiNoChoicesResponse @0
*/
// 1. 导入依赖(路径固定,不可修改)
include dirname(__FILE__, 5) . '/test/lib/init.php';
include dirname(__FILE__, 2) . '/lib/model.class.php';
// 2. 用户登录
su('admin');
// 3. 创建测试实例
$aiTest = new aiModelTest();
// 4. 模拟设置为ERNIE模型类型
$aiTest->instance->modelConfig = new stdClass();
$aiTest->instance->modelConfig->type = 'baidu-ernie';
// 测试步骤
// 步骤1测试ERNIE模型正常响应解析
$ernieResponse = new stdClass();
$ernieResponse->result = 'success';
$ernieResponse->content = '{"result":"这是文心一言的回复消息","id":"as-bcfa043ctv","object":"chat.completion","created":1681277883,"sentence_id":0}';
r($aiTest->parseChatResponseTest($ernieResponse)) && p('0') && e('这是文心一言的回复消息');
// 步骤2测试OpenAI模型正常响应解析
$aiTest->instance->modelConfig->type = 'openai-gpt35';
$openaiResponse = new stdClass();
$openaiResponse->result = 'success';
$openaiResponse->content = '{"id":"chatcmpl-123","object":"chat.completion","created":1677652288,"model":"gpt-3.5-turbo","choices":[{"index":0,"message":{"role":"assistant","content":"Hello! How can I help you today?"},"finish_reason":"stop"},{"index":1,"message":{"role":"assistant","content":"Another response message"},"finish_reason":"stop"}],"usage":{"prompt_tokens":9,"completion_tokens":12,"total_tokens":21}}';
r($aiTest->parseChatResponseTest($openaiResponse)) && p('0') && e('Hello! How can I help you today?');
// 步骤3测试失败响应处理
$failResponse = new stdClass();
$failResponse->result = 'fail';
$failResponse->message = 'API request failed';
r($aiTest->parseChatResponseTest($failResponse)) && p() && e('0');
// 步骤4测试ERNIE模型缺少result字段的响应
$aiTest->instance->modelConfig->type = 'baidu-ernie';
$ernieNoResultResponse = new stdClass();
$ernieNoResultResponse->result = 'success';
$ernieNoResultResponse->content = '{"id":"as-bcfa043ctv","object":"chat.completion","created":1681277883,"sentence_id":0}';
r($aiTest->parseChatResponseTest($ernieNoResultResponse)) && p() && e('0');
// 步骤5测试OpenAI模型缺少choices字段的响应
$aiTest->instance->modelConfig->type = 'openai-gpt35';
$openaiNoChoicesResponse = new stdClass();
$openaiNoChoicesResponse->result = 'success';
$openaiNoChoicesResponse->content = '{"id":"chatcmpl-123","object":"chat.completion","created":1677652288,"model":"gpt-3.5-turbo","usage":{"prompt_tokens":9,"completion_tokens":12,"total_tokens":21}}';
r($aiTest->parseChatResponseTest($openaiNoChoicesResponse)) && p() && e('0');