#!/usr/bin/python3
#coding=utf-8
import json
import requests
from fastapi import FastAPI
from pydantic import BaseModel
from chat_util import *
app = FastAPI()
@app.get("/")
async def read_root():
answer="泰凡科技"
return {"Hello": answer}
@app.get("/chatbot/")
async def empty_input(q: str = None):
answer="试着在/chatbot/后传入闲聊问题吧?"
if q:
answer=get_content(q)
if answer=='':
for i in range(2):
time.sleep(2)
answer=get_content(sentence)
if answer!='' and answer!="emmmm,我不是很懂你的意思":
break
else:
answer="emmmm,我不是很懂你的意思"
#ans=IE_client_test.other_test()
return {"Answer":answer, "Example":"http://121.89.167.5:5997/chatbot/?q=你好"}
@app.get("/daily/")
async def get_iciba():
url = 'http://open.iciba.com/dsapi/'
r = requests.get(url)
return {"每日一句":r.text}
- chatbot功能使用了腾讯AI平台的智能闲聊功能,chat_util相关接口功能如下
import hashlib
import time
import requests
import random
import string
from urllib.parse import quote
def curlmd5(src):
m = hashlib.md5(src.encode('UTF-8'))
return m.hexdigest().upper()
def get_params(plus_item): #用于返回request需要的data内容
global params
t = time.time() #请求时间戳(秒级),(保证签名5分钟有效)
time_stamp=str(int(t))
nonce_str = ''.join(random.sample(string.ascii_letters + string.digits, 10)) # 请求随机字符串,用于保证签名不可预测
app_id='114514' # 修改成自己的id
app_key='xxxxxxxxxx' # 修改成自己的key
params = {'app_id':app_id,
'question':plus_item,
'time_stamp':time_stamp,
'nonce_str':nonce_str,
'session':'10000'
}
sign_before = ''
for key in sorted(params): #要对key排序再拼接
sign_before += '{}={}&'.format(key,quote(params[key], safe='')) # 拼接过程需要使用quote函数形成URL编码
sign_before += 'app_key={}'.format(app_key) # 将app_key拼接到sign_before后
sign = curlmd5(sign_before)
params['sign'] = sign # 对sign_before进行MD5运算
return params #得到request需要的data内容
def get_content(plus_item):
global payload,r
url = "https://api.ai.qq.com/fcgi-bin/nlp/nlp_textchat" # 聊天的API地址
plus_item = plus_item.encode('utf-8')
payload = get_params(plus_item)
r = requests.post(url,data=payload) #带参请求api地址
result=r.json()["data"]["answer"]
return result #获得返回内容
-
daily功能使用了词霸的每日一词
-
运行命令
uvicorn main:app --reload --host 0.0.0.0 --port 5997