intent.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. import json
  2. from matplotlib.font_manager import json_dump
  3. import model.records
  4. from app.gpt.service.ali_filetrans import file_trans
  5. from app.gpt.service.openai import openai_check_intent
  6. from common.log import log
  7. from database.db_mysql import async_db_session
  8. async def get_intent(body: dict):
  9. notify = body['notify']
  10. record = model.records.Records(
  11. body=body,
  12. staff_no=str(notify['staffNo']),
  13. caller=str(notify['caller']),
  14. callee=str(notify['callee']),
  15. record_file=str(notify['recordFile']),
  16. session=str(notify['session']),
  17. )
  18. mp3url = "https://toolsapi.gkscrm.com/api/v1/gpt/recordfile?filepath=" + notify['recordFile']
  19. get_ali_response = file_trans(mp3url)
  20. if not get_ali_response:
  21. log.error("ali_trans error")
  22. return False
  23. if "Result" not in get_ali_response:
  24. log.error("ali_trans response not Result")
  25. return False
  26. record.ali_trans = get_ali_response
  27. record.ali_task_id = get_ali_response["TaskId"]
  28. sentences = get_ali_response["Result"]["Sentences"]
  29. chats = ""
  30. for sentence in sentences:
  31. chats += "speaker-" + sentence["SpeakerId"] + ": " + sentence["Text"] + "\n"
  32. log.info("聊天记录如下:\n" + chats)
  33. record.chats = chats
  34. user_intent = openai_check_intent(chats)
  35. log.info("用户意图为:" + user_intent.model_dump_json(indent=4))
  36. record.user_intent = user_intent.user_intent
  37. record.basis = user_intent.basis
  38. if user_intent.accept:
  39. record.accept = 1
  40. else:
  41. record.accept = 2
  42. async with async_db_session() as db:
  43. db.add(record)
  44. await db.commit()
  45. return True