题目
实现一个简单的ai聊天机器人
实现流程
- 注册openrouter(https://openrouter.ai/),并使用里面提供的免费model “Mistral 7B Instruct”作为ai provider,以此为基础开发聊天对话机器人
- 使用 fastapi + mongodb搭建后端,需要实现3个api
- get_ai_chat_response
- 用户输入问题,通过ai provider返回ai的回答
- 输入参数
- message: str 用户输入的聊天内容
- user_name: str 聊天的人名字
- 输出参数
- 注意点:
- 如果超过了model的token最大限制,需要自动middle out中间的内容,比如"openchat 3.5"的最大token是8,192,如果输入了12000token,需要自动把中间的4000-5000token的文字删掉,然后再传给openrouter
- get_user_chat_history
- 根据输入参数输出用户的聊天记录
- 输入参数
- user_name: str 聊天的人名字
- last_n: int 输出最后n条聊天记录
- 输出 i个历史记录的array
- 例子:[{"type": "user", "text": "hi, my name is Eric"}, {"type": "ai", "text": "Hi Eric, what can I do for you!"}]
- 注意点:
- 聊天记录应该是middle out之前的内容而不是middle out后传入openrouter的内容
- 用户只能获取自己的聊天记录
- get_chat_status_today
- 返回用户当天聊天次数,对应后面做聊天控制的要求
- 输入
- 输出当天已经聊天次数
- 例子:{"user_name": "xxx", "chat_cnt": 3}
- 对用户的聊天进行控制
- 一个用户一天最多发送20条信息,超过返回401和对应error
- 一个用户每30秒最多发送3条信息,超过返回401和对应error
例子
response = get_ai_chat_response(
message = "hi, my name is Eric",
user_name = "eric",
)
# 输出:*Hi Eric, what can I do for you!*
print(response)
response = get_user_chat_history(
user_name = "eric"
last_n = 2
)
# 输出: [{"type": "user", "text": "hi, my name is Eric"}, {"type": "ai", "text": "Hi Eric, what can I do for you!"}]
print(response)
提交内容要求
在自己的服务器上搭建后端,根据以上要求提交3个能直接访问的API,以及简单的API 说明介绍文档
公司简介
【公司概况】