96 lines
2.4 KiB
Python
96 lines
2.4 KiB
Python
|
|
"""
|
|||
|
|
LLM 流式调用测试
|
|||
|
|
"""
|
|||
|
|
|
|||
|
|
from src.Module.llm.llm import StreamingLLM, chat
|
|||
|
|
|
|||
|
|
|
|||
|
|
def test_streaming_chat():
|
|||
|
|
"""测试流式对话"""
|
|||
|
|
print("=" * 60)
|
|||
|
|
print(" LLM 流式对话测试")
|
|||
|
|
print("=" * 60)
|
|||
|
|
|
|||
|
|
llm = StreamingLLM(
|
|||
|
|
model='deepseek-v3.2',
|
|||
|
|
enable_thinking=False, # 不开启思考模式
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
message = "用一句话介绍你自己"
|
|||
|
|
print(f"\n用户: {message}\n")
|
|||
|
|
print("助手: ", end="", flush=True)
|
|||
|
|
|
|||
|
|
full_response = ""
|
|||
|
|
for chunk in llm.chat(message):
|
|||
|
|
if chunk.error:
|
|||
|
|
print(f"\n[错误] {chunk.error}")
|
|||
|
|
return False
|
|||
|
|
if chunk.content:
|
|||
|
|
print(chunk.content, end="", flush=True)
|
|||
|
|
full_response += chunk.content
|
|||
|
|
|
|||
|
|
print("\n")
|
|||
|
|
print(f"完整响应长度: {len(full_response)} 字符")
|
|||
|
|
|
|||
|
|
return len(full_response) > 0
|
|||
|
|
|
|||
|
|
|
|||
|
|
def test_thinking_mode():
|
|||
|
|
"""测试思考模式"""
|
|||
|
|
print("\n" + "=" * 60)
|
|||
|
|
print("思考模式测试")
|
|||
|
|
print("=" * 60)
|
|||
|
|
|
|||
|
|
llm = StreamingLLM(
|
|||
|
|
model='deepseek-v3.2',
|
|||
|
|
enable_thinking=True, # 开启思考模式
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
message = "1+1等于几?简单回答"
|
|||
|
|
print(f"\n用户: {message}\n")
|
|||
|
|
|
|||
|
|
reasoning = ""
|
|||
|
|
content = ""
|
|||
|
|
is_answering = False
|
|||
|
|
|
|||
|
|
for chunk in llm.chat(message):
|
|||
|
|
if chunk.error:
|
|||
|
|
print(f"\n[错误] {chunk.error}")
|
|||
|
|
return False
|
|||
|
|
|
|||
|
|
if chunk.reasoning_content:
|
|||
|
|
if not is_answering:
|
|||
|
|
if not reasoning:
|
|||
|
|
print("思考过程: ", end="", flush=True)
|
|||
|
|
print(chunk.reasoning_content, end="", flush=True)
|
|||
|
|
reasoning += chunk.reasoning_content
|
|||
|
|
|
|||
|
|
if chunk.content:
|
|||
|
|
if not is_answering:
|
|||
|
|
print(f"\n\n回复: ", end="", flush=True)
|
|||
|
|
is_answering = True
|
|||
|
|
print(chunk.content, end="", flush=True)
|
|||
|
|
content += chunk.content
|
|||
|
|
|
|||
|
|
print("\n")
|
|||
|
|
print(f"思考过程: {len(reasoning)} 字符")
|
|||
|
|
print(f"回复内容: {len(content)} 字符")
|
|||
|
|
|
|||
|
|
return len(content) > 0
|
|||
|
|
|
|||
|
|
|
|||
|
|
if __name__ == '__main__':
|
|||
|
|
results = []
|
|||
|
|
|
|||
|
|
success1 = test_streaming_chat()
|
|||
|
|
results.append(("流式对话", success1))
|
|||
|
|
|
|||
|
|
success2 = test_thinking_mode()
|
|||
|
|
results.append(("思考模式", success2))
|
|||
|
|
|
|||
|
|
print("\n" + "=" * 60)
|
|||
|
|
print("测试结果:")
|
|||
|
|
for name, success in results:
|
|||
|
|
status = "✓ 通过" if success else "✗ 失败"
|
|||
|
|
print(f" {name}: {status}")
|