Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

35 lignes
1.2KB

  1. # encoding:utf-8
  2. from bot.bot import Bot
  3. from config import conf
  4. from common.log import logger
  5. import openai
  6. # OpenAI对话模型API (可用)
  7. class OpenAIBot(Bot):
  8. def __init__(self):
  9. openai.api_key = conf().get('open_ai_api_key')
  10. def reply(self, query, context=None):
  11. logger.info("[OPEN_AI] query={}".format(query))
  12. try:
  13. response = openai.Completion.create(
  14. model="text-davinci-003", #对话模型的名称
  15. prompt=query,
  16. temperature=0.9, #值在[0,1]之间,越大表示回复越具有不确定性
  17. max_tokens=1200, #回复最大的字符数
  18. top_p=1,
  19. frequency_penalty=0.0, #[-2,2]之间,该值越大则更倾向于产生不同的内容
  20. presence_penalty=0.6, #[-2,2]之间,该值越大则更倾向于产生不同的内容
  21. stop=["#"]
  22. )
  23. res_content = response.choices[0]["text"].strip()
  24. except Exception as e:
  25. logger.error(e)
  26. return None
  27. logger.info("[OPEN_AI] reply={}".format(res_content))
  28. return res_content