This commit is contained in:
2025-08-18 15:58:31 +08:00
parent 7e95ccc0d0
commit 12bafdde8a
3 changed files with 28 additions and 47 deletions

View File

@@ -1,7 +1,8 @@
from Config.GoApiConst import MODEL_GPT35, MODEL_GPT4
from Util.GoApiUtil import ModelInteractor
import sys import sys
from Util import LlmUtil
def initialize_chat_history(): def initialize_chat_history():
"""初始化对话历史,包含系统提示""" """初始化对话历史,包含系统提示"""
system_prompt = """ system_prompt = """
@@ -30,41 +31,18 @@ not alecture.
Above all:DO NOT DO THE USER'S WORK FOR THEM. Don't answer homework questions - Help the user find the answer,by working Above all:DO NOT DO THE USER'S WORK FOR THEM. Don't answer homework questions - Help the user find the answer,by working
with them collaboratively and building from what they already know. with them collaboratively and building from what they already know.
""" """
return [{ return [{"role": "system", "content": system_prompt}]
"role": "system",
"content": system_prompt
}]
# 示例使用
if __name__ == "__main__": if __name__ == "__main__":
# 创建模型交互器实例
interactor = ModelInteractor()
# 使用不同的模型
model_name = MODEL_GPT4
print(f"使用模型: {model_name}")
# 初始化对话历史 # 初始化对话历史
chat_history = initialize_chat_history() chat_history = initialize_chat_history()
# 第一轮问题(可选) # 欢迎消息
first_question = "讲解一下勾股定理的证明" print("教师助手已启动。输入 'exit''退出' 结束对话")
print(f"\n初始问题: {first_question}") print("你可以开始提问了,例如: '讲解一下勾股定理的证明'")
chat_history.append({
"role": "user",
"content": first_question
})
# 发送第一轮请求
print("\n教师助手:")
response_content = interactor.stream_request(model_name, chat_history)
chat_history.append({
"role": "assistant",
"content": response_content
})
# 多轮对话循环 # 多轮对话循环
print("\n多轮对话已启动。输入 'exit''退出' 结束对话。")
while True: while True:
# 获取用户输入 # 获取用户输入
user_input = input("\n你: ") user_input = input("\n你: ")
@@ -75,17 +53,20 @@ if __name__ == "__main__":
sys.exit(0) sys.exit(0)
# 添加用户输入到对话历史 # 添加用户输入到对话历史
chat_history.append({ chat_history.append({"role": "user", "content": user_input})
"role": "user",
"content": user_input
})
# 发送请求 # 发送请求(传递完整对话历史)
print("\n教师助手:") print("\n教师助手:")
response_content = interactor.stream_request(model_name, chat_history) try:
# 调用LlmUtil获取响应传递对话历史
response_content = LlmUtil.get_llm_response(user_input, chat_history)
# 打印响应
print(response_content)
# 添加助手回复到对话历史 # 添加助手回复到对话历史
chat_history.append({ chat_history.append({"role": "assistant", "content": response_content})
"role": "assistant", except Exception as e:
"content": response_content print(f"发生错误: {str(e)}")
}) # 从对话历史中移除最后添加的用户输入,以便用户可以重试
chat_history.pop()

View File

@@ -3,7 +3,7 @@ import requests
from Config.Config import GPTNB_API_KEY from Config.Config import GPTNB_API_KEY
class ModelInteractor: class ModelInteractor:
def __init__(self, api_key=GPTNB_API_KEY, api_url="https://goapi.gptnb.ai/v1/chat/completions"): def __init__(self, api_key=GPTNB_API_KEY, api_url="https://goapi.gptnb.ai/v1/chat/completions"): # 修复URL
self.api_key = api_key self.api_key = api_key
self.api_url = api_url self.api_url = api_url
self.headers = { self.headers = {
@@ -45,7 +45,7 @@ class ModelInteractor:
response = requests.post( response = requests.post(
self.api_url, self.api_url,
headers=self.headers, headers=self.headers,
data=json.dumps(payload), data=json.dumps(payload), # 确保变量名一致
stream=True, stream=True,
timeout=30 timeout=30
) )