add assistant to canvas chat history (#3201)

### What problem does this PR solve?

#3185

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Kevin Hu 2024-11-05 10:04:31 +08:00 committed by GitHub
parent 18ae8a4091
commit 339639a9db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 7 additions and 7 deletions

View File

@ -13,15 +13,11 @@
# See the License for the specific language governing permissions and # See the License for the specific language governing permissions and
# limitations under the License. # limitations under the License.
# #
import importlib
import json import json
import traceback import traceback
from abc import ABC from abc import ABC
from copy import deepcopy from copy import deepcopy
from functools import partial from functools import partial
import pandas as pd
from agent.component import component_class from agent.component import component_class
from agent.component.base import ComponentBase from agent.component.base import ComponentBase
from agent.settings import flow_logger, DEBUG from agent.settings import flow_logger, DEBUG
@ -260,8 +256,10 @@ class Canvas(ABC):
def get_history(self, window_size): def get_history(self, window_size):
convs = [] convs = []
for role, obj in self.history[window_size * -1:]: for role, obj in self.history[window_size * -1:]:
convs.append({"role": role, "content": (obj if role == "user" else if isinstance(obj, list) and obj and all([isinstance(o, dict) for o in obj]):
'\n'.join([str(s) for s in pd.DataFrame(obj)['content']]))}) convs.append({"role": role, "content": '\n'.join([str(s.get("content", "")) for s in obj])})
else:
convs.append({"role": role, "content": str(obj)})
return convs return convs
def add_user_input(self, question): def add_user_input(self, question):

View File

@ -261,6 +261,7 @@ def completion():
ensure_ascii=False) + "\n\n" ensure_ascii=False) + "\n\n"
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id}) canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
canvas.history.append(("assistant", final_ans["content"]))
if final_ans.get("reference"): if final_ans.get("reference"):
canvas.reference.append(final_ans["reference"]) canvas.reference.append(final_ans["reference"])
cvs.dsl = json.loads(str(canvas)) cvs.dsl = json.loads(str(canvas))

View File

@ -133,6 +133,7 @@ def run():
yield "data:" + json.dumps({"retcode": 0, "retmsg": "", "data": ans}, ensure_ascii=False) + "\n\n" yield "data:" + json.dumps({"retcode": 0, "retmsg": "", "data": ans}, ensure_ascii=False) + "\n\n"
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id}) canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
canvas.history.append(("assistant", final_ans["content"]))
if final_ans.get("reference"): if final_ans.get("reference"):
canvas.reference.append(final_ans["reference"]) canvas.reference.append(final_ans["reference"])
cvs.dsl = json.loads(str(canvas)) cvs.dsl = json.loads(str(canvas))