From 3bfb2eca92bfcd224cb34ce76cc94b367a5ba7ba Mon Sep 17 00:00:00 2001 From: Divano Date: Mon, 4 Aug 2025 15:09:53 +0800 Subject: [PATCH] Update test_base_chat.py (#3183) --- test/ce/server/test_base_chat.py | 80 ++++++++++++++++++++++++++++++-- 1 file changed, 76 insertions(+), 4 deletions(-) diff --git a/test/ce/server/test_base_chat.py b/test/ce/server/test_base_chat.py index cb8418599..ae75b7808 100644 --- a/test/ce/server/test_base_chat.py +++ b/test/ce/server/test_base_chat.py @@ -3,6 +3,10 @@ # @author DDDivano # encoding=utf-8 vi:ts=4:sw=4:expandtab:ft=python +""" +some basic check for fd web api +""" + import json from core import TEMPLATE, URL, build_request_payload, send_request @@ -72,9 +76,9 @@ def test_logprobs_enabled(): def test_stop_sequence(): data = { "stream": False, - "stop": ["然后"], + "stop": ["果冻"], "messages": [ - {"role": "user", "content": "请输出:这是第一段。然后这是第二段。"}, + {"role": "user", "content": "你要严格按照我接下来的话输出,输出冒号后面的内容,请输出:这是第一段。果冻这是第二段啦啦啦啦啦。"}, ], "max_tokens": 20, "top_p": 0, @@ -121,13 +125,13 @@ def test_multi_turn_conversation(): def test_bad_words_filtering(): - banned_tokens = ["你", "我", "年龄"] + banned_tokens = ["和", "呀"] data = { "stream": False, "messages": [ {"role": "system", "content": "你是一个助手,回答简洁清楚"}, - {"role": "user", "content": "请输出我的年龄是10岁"}, + {"role": "user", "content": "请输出冒号后面的字: 我爱吃果冻,和苹果,香蕉,和荔枝"}, ], "top_p": 0, "max_tokens": 69, @@ -144,3 +148,71 @@ def test_bad_words_filtering(): assert word not in content, f"bad_word '{word}' 不应出现在生成结果中" print("test_bad_words_filtering 通过:生成结果未包含被禁词") + + data = { + "stream": False, + "messages": [ + {"role": "system", "content": "你是一个助手,回答简洁清楚"}, + {"role": "user", "content": "请输出冒号后面的字,一模一样: 我爱吃果冻,苹果,香蕉,和荔枝呀呀呀"}, + ], + "top_p": 0, + "max_tokens": 69, + # "bad_words": banned_tokens, + } + + payload = build_request_payload(TEMPLATE, data) + response = send_request(URL, payload).json() + + content = response["choices"][0]["message"]["content"] + print("生成内容:", content) + + for word in banned_tokens: + assert word not in content, f"bad_word '{word}' 不应出现在生成结果中" + + print("test_bad_words_filtering 通过:生成结果未包含被禁词") + + +def test_bad_words_filtering1(): + banned_tokens = ["和", "呀"] + + data = { + "stream": False, + "messages": [ + {"role": "system", "content": "你是一个助手,回答简洁清楚"}, + {"role": "user", "content": "请输出冒号后面的字: 我爱吃果冻,和苹果,香蕉,和荔枝"}, + ], + "top_p": 0, + "max_tokens": 69, + "bad_words": banned_tokens, + } + + payload = build_request_payload(TEMPLATE, data) + response = send_request(URL, payload).json() + + content = response["choices"][0]["message"]["content"] + print("生成内容:", content) + + for word in banned_tokens: + assert word not in content, f"bad_word '{word}' 不应出现在生成结果中" + + print("test_bad_words_filtering 通过:生成结果未包含被禁词") + word = "呀呀" + data = { + "stream": False, + "messages": [ + {"role": "system", "content": "你是一个助手,回答简洁清楚"}, + {"role": "user", "content": "请输出冒号后面的字,一模一样: 我爱吃果冻,苹果,香蕉,和荔枝呀呀呀"}, + ], + "top_p": 0, + "max_tokens": 69, + } + + payload = build_request_payload(TEMPLATE, data) + response = send_request(URL, payload).json() + + content = response["choices"][0]["message"]["content"] + print("生成内容:", content) + + assert word in content, f" '{word}' 应出现在生成结果中" + + print("test_bad_words_filtering 通过:生成结果未包含被禁词")