本帖最后由 alexyui 于 2023-2-23 22:23 编辑
我刚想发一个python版的,被超哥抢先了。。
代码贡献出来,利用python的flask的框架,已经做好了跨域处理,同样可以理解上下文哦,有兴趣的自取优化。。
- from flask import Flask, request, jsonify
- from flask_cors import CORS,cross_origin
- import openai
- from tenacity import retry, stop_after_attempt, wait_random
- app = Flask(__name__)
- cors = CORS(app, resources={r"/*": {"origins": "*"}})
- openai.api_key = "你的secret key" #此处填入你openAI的secret key
- @retry(stop=stop_after_attempt(6), wait=wait_random(min=1, max=3))
- def chat(prompt):
- response = openai.Completion.create(
- model="text-davinci-003",
- prompt=prompt,
- temperature=0.9,
- max_tokens=2500,
- top_p=1,
- frequency_penalty=0.0,
- presence_penalty=0.6,
- stop=["Human:", "AI:"]
- )
- answer = response["choices"][0]["text"].strip()
- if len(answer) != 0:
- return answer
- else:
- raise Exception
- def get_answer(question, turns):
- text = ""
- turns += [question]
- if len(turns) > 1:
- # 如果之前已经有对话,则将对话拼接成字符串作为新的prompt
- text = " ".join(turns[-2:])
- else:
- text = question
- result = chat(text)
- turns += [result]
- return result, turns
- @app.route('/chat', methods=['POST'])
- @cross_origin()
- def chatbot():
- question = request.json['question']
- turns = request.json.get('turns', [])
- answer, turns = get_answer(question, turns)
- return jsonify({'answer': answer, 'turns': turns})
- if __name__ == '__main__':
- app.run(host='http://127.0.0.1', port=5000, debug=True)
复制代码
|