kimi_task.py 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. """
  2. @author: luojunhui
  3. kimi 相关方法
  4. """
  5. import json
  6. from typing import Dict
  7. from applications.const import new_content_id_task_const
  8. from applications.functions.kimi import KimiServer
  9. async def get_kimi_status(content_id, article_text_table, db_client) -> int:
  10. """
  11. 通过 content_id 获取kimi info
  12. :return:
  13. """
  14. select_sql = f"""
  15. SELECT kimi_status
  16. FROM {article_text_table}
  17. WHERE content_id = '{content_id}';
  18. """
  19. response = await db_client.async_select(select_sql)
  20. if response:
  21. kimi_status = response[0][0]
  22. return kimi_status
  23. else:
  24. return new_content_id_task_const.ARTICLE_TEXT_TABLE_ERROR
  25. async def get_kimi_result(content_id, article_text_table, db_client) -> Dict:
  26. """
  27. 获取kimi的返回结果
  28. """
  29. get_kimi_sql = f"""
  30. SELECT article_title, kimi_title, kimi_summary, kimi_keys
  31. FROM {article_text_table}
  32. WHERE content_id = '{content_id}';
  33. """
  34. kimi_info = await db_client.async_select(get_kimi_sql)
  35. if kimi_info:
  36. try:
  37. response = {
  38. "kimi_title": kimi_info[0][1],
  39. "ori_title": kimi_info[0][0],
  40. "kimi_summary": kimi_info[0][2],
  41. "kimi_keys": json.loads(kimi_info[0][3])
  42. }
  43. return response
  44. except Exception as e:
  45. return {}
  46. else:
  47. return {}
  48. async def generate_kimi_result(content_id, article_text_table, db_client) -> Dict:
  49. """
  50. 为content_id执行kimi操作
  51. """
  52. K = KimiServer()
  53. select_sql = f"""
  54. SELECT article_title, article_text
  55. FROM {article_text_table}
  56. WHERE content_id = '{content_id}';
  57. """
  58. res = await db_client.async_select(select_sql)
  59. article_obj = {
  60. "article_title": res[0][0],
  61. "article_text": res[0][1],
  62. "content_id": content_id
  63. }
  64. kimi_info = await K.search_kimi_schedule(params=article_obj)
  65. kimi_title = kimi_info['k_title']
  66. content_title = kimi_info['content_title'].replace("'", "").replace('"', "")
  67. content_keys = json.dumps(kimi_info['content_keys'], ensure_ascii=False)
  68. update_kimi_sql = f"""
  69. UPDATE {article_text_table}
  70. SET
  71. kimi_title = %s, kimi_summary = %s, kimi_keys = %s, kimi_status = %s
  72. WHERE content_id = %s;"""
  73. await db_client.async_insert(
  74. sql=update_kimi_sql,
  75. params=(
  76. kimi_title, content_title, content_keys, new_content_id_task_const.KIMI_SUCCESS_STATUS, content_id)
  77. )
  78. return {
  79. "kimi_title": kimi_title,
  80. "ori_title": article_obj['article_title'],
  81. "kimi_summary": content_title,
  82. "kimi_keys": kimi_info['content_keys']
  83. }