Flask+WSGI服务器(gunicorn或wsgi)部署Watson助手
Watson assistant deployment on Flask+WSGI server (gunicorn or wsgi)
我正在 Flask + Gunicorn + Nginx 上部署我的 watson 助手聊天机器人。
我能够成功 dockerize 和 运行 ,但有些东西破坏了我的代码。当我将消息发送到 watson 服务时,正在创建多个 watson 助手会话。当我尝试回复一个意图时,我得到另一个意图或插槽的答案或不理解消息
我已经查看了有关数字海洋和 github 的所有教程,但我认为创建聊天机器人会话的处理方式应该有所不同。
app.py
from flask import Flask, render_template,Response,make_response,jsonify
import os
from ibm_watson import AssistantV2
import random
from random import randint
import json
#import report
from io import StringIO
app = Flask(__name__)
conversation = AssistantV2(
iam_apikey = 'key',
url='https://gateway.watsonplatform.net/assistant/api',
version='2019-05-19')
session = conversation.create_session("someid").get_result()
variables = None
#context_val = {}
@app.route('/')
@app.route('/index')
def chat():
return render_template('chat.html')
@app.route('/send_message/<message>')
def send_mesage(message):
text = ''
response = conversation.message(
assistant_id = 'id',
session_id= session['session_id'],input={'text': str(message),'options': {
'return_context': True}}
).get_result()
variables = response['output'].get('user_defined')
#context = response['context']['skills']['main skill']['user_defined']
for i in response['output']['generic']:
text = text+ i['text']+'\n'
return text
if __name__ == "__main__":
app.run(host='0.0.0.0')
wsgi.py
from app import app
if __name__ == "__main__":
app.run()
Docker 文件
FROM python:3.6
WORKDIR /app
ADD . /app
RUN chgrp -R 0 /app/app.log && chmod -R g=u /app/app.log
RUN pip install -r requirements.txt
EXPOSE 8080
CMD ["gunicorn", "-b", "0.0.0.0:8080", "app", "-p 8080:8080"]
RUN chmod 770 /app
USER 1001
使用 IBM Watson Assistant with the V2 API 时,您需要注意以下对象:
- 首先,您创建一个助手。它管理与 Watson Assistant 的连接。
- 接下来,Session 是聊天中的每个用户互动。
- 最后,Message 在会话中流向 Watson,Response 返回。
您可能已经看过这个 simple code sample in the docs,您自己的代码在一般水平上是相似的。要使其正常工作,您需要为每个用户会话创建 Watson 会话,然后将消息作为相应会话的一部分发送。这样,聊天上下文就会正确保存。您的代码当前初始化 Watson 并创建一次会话。您需要为每个用户创建一个会话。查看会话管理。
我正在 Flask + Gunicorn + Nginx 上部署我的 watson 助手聊天机器人。
我能够成功 dockerize 和 运行 ,但有些东西破坏了我的代码。当我将消息发送到 watson 服务时,正在创建多个 watson 助手会话。当我尝试回复一个意图时,我得到另一个意图或插槽的答案或不理解消息
我已经查看了有关数字海洋和 github 的所有教程,但我认为创建聊天机器人会话的处理方式应该有所不同。
app.py
from flask import Flask, render_template,Response,make_response,jsonify
import os
from ibm_watson import AssistantV2
import random
from random import randint
import json
#import report
from io import StringIO
app = Flask(__name__)
conversation = AssistantV2(
iam_apikey = 'key',
url='https://gateway.watsonplatform.net/assistant/api',
version='2019-05-19')
session = conversation.create_session("someid").get_result()
variables = None
#context_val = {}
@app.route('/')
@app.route('/index')
def chat():
return render_template('chat.html')
@app.route('/send_message/<message>')
def send_mesage(message):
text = ''
response = conversation.message(
assistant_id = 'id',
session_id= session['session_id'],input={'text': str(message),'options': {
'return_context': True}}
).get_result()
variables = response['output'].get('user_defined')
#context = response['context']['skills']['main skill']['user_defined']
for i in response['output']['generic']:
text = text+ i['text']+'\n'
return text
if __name__ == "__main__":
app.run(host='0.0.0.0')
wsgi.py
from app import app
if __name__ == "__main__":
app.run()
Docker 文件
FROM python:3.6
WORKDIR /app
ADD . /app
RUN chgrp -R 0 /app/app.log && chmod -R g=u /app/app.log
RUN pip install -r requirements.txt
EXPOSE 8080
CMD ["gunicorn", "-b", "0.0.0.0:8080", "app", "-p 8080:8080"]
RUN chmod 770 /app
USER 1001
使用 IBM Watson Assistant with the V2 API 时,您需要注意以下对象:
- 首先,您创建一个助手。它管理与 Watson Assistant 的连接。
- 接下来,Session 是聊天中的每个用户互动。
- 最后,Message 在会话中流向 Watson,Response 返回。
您可能已经看过这个 simple code sample in the docs,您自己的代码在一般水平上是相似的。要使其正常工作,您需要为每个用户会话创建 Watson 会话,然后将消息作为相应会话的一部分发送。这样,聊天上下文就会正确保存。您的代码当前初始化 Watson 并创建一次会话。您需要为每个用户创建一个会话。查看会话管理。