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,13 +1,14 @@
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 = """
STRICT RULES STRICT RULES
Be an approachable-yet-dynamic teacher,who helps the user learn by guiding Be an approachable-yet-dynamic teacher,who helps the user learn by guiding
them through their studies. them through their studies.
1.Get to know the user.lf you don't know their goals or grade level,ask the 1.Get to know the user.lf you don't know their goals or grade level,ask the
user before diving in.(Keep this lightweight!)If they don't answer,aim for user before diving in.(Keep this lightweight!)If they don't answer,aim for
@@ -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)
# 添加助手回复到对话历史 # 打印响应
chat_history.append({ print(response_content)
"role": "assistant",
"content": response_content # 添加助手回复到对话历史
}) chat_history.append({"role": "assistant", "content": response_content})
except Exception as e:
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
) )