diff --git a/ai/ai.go b/ai/ai.go index 7cf7380e..e9c6d126 100644 --- a/ai/ai.go +++ b/ai/ai.go @@ -122,6 +122,8 @@ func QueryAnswerStream(authToken string, question string, writer io.Writer, buil } } + fmt.Printf("%s", data) + // Write the streamed data as Server-Sent Events if _, err = fmt.Fprintf(writer, "data: %s\n\n", data); err != nil { return err diff --git a/controllers/chat.go b/controllers/chat.go index ce5a76a0..52c0b444 100644 --- a/controllers/chat.go +++ b/controllers/chat.go @@ -31,6 +31,7 @@ import ( // @router /get-chats [get] func (c *ApiController) GetChats() { owner := c.Input().Get("owner") + owner = "admin" limit := c.Input().Get("pageSize") page := c.Input().Get("p") field := c.Input().Get("field") diff --git a/controllers/message.go b/controllers/message.go index 86ad1151..a87f1564 100644 --- a/controllers/message.go +++ b/controllers/message.go @@ -107,9 +107,9 @@ func (c *ApiController) GetMessageAnswer() { return } - chatId := util.GetId(message.Owner, message.Chat) + chatId := util.GetId("admin", message.Chat) chat := object.GetChat(chatId) - if chat == nil { + if chat == nil || chat.Organization != message.Organization { c.ResponseErrorStream(fmt.Sprintf(c.T("chat:The chat: %s is not found"), chatId)) return } @@ -144,12 +144,18 @@ func (c *ApiController) GetMessageAnswer() { authToken := provider.ClientSecret question := questionMessage.Text var stringBuilder strings.Builder + + fmt.Printf("Question: [%s]\n", questionMessage.Text) + fmt.Printf("Answer: [") + err := ai.QueryAnswerStream(authToken, question, c.Ctx.ResponseWriter, &stringBuilder) if err != nil { c.ResponseErrorStream(err.Error()) return } + fmt.Printf("]\n") + event := fmt.Sprintf("event: end\ndata: %s\n\n", "end") _, err = c.Ctx.ResponseWriter.Write([]byte(event)) if err != nil { @@ -158,9 +164,6 @@ func (c *ApiController) GetMessageAnswer() { answer := stringBuilder.String() - fmt.Printf("Question: [%s]\n", questionMessage.Text) - fmt.Printf("Answer: [%s]\n", answer) - message.Text = answer object.UpdateMessage(message.GetId(), message) } @@ -202,10 +205,18 @@ func (c *ApiController) AddMessage() { return } + var chat *object.Chat + if message.Chat != "" { + chatId := util.GetId("admin", message.Chat) + chat = object.GetChat(chatId) + if chat == nil || chat.Organization != message.Organization { + c.ResponseError(fmt.Sprintf(c.T("chat:The chat: %s is not found"), chatId)) + return + } + } + affected := object.AddMessage(&message) if affected { - chatId := util.GetId(message.Owner, message.Chat) - chat := object.GetChat(chatId) if chat != nil && chat.Type == "AI" { answerMessage := &object.Message{ Owner: message.Owner, diff --git a/web/src/ChatPage.js b/web/src/ChatPage.js index 419b6949..4661144f 100644 --- a/web/src/ChatPage.js +++ b/web/src/ChatPage.js @@ -33,7 +33,7 @@ class ChatPage extends BaseListPage { newChat(chat) { const randomName = Setting.getRandomName(); return { - owner: this.props.account.owner, // this.props.account.applicationName, + owner: "admin", // this.props.account.applicationName, name: `chat_${randomName}`, createdTime: moment().format(), updatedTime: moment().format(),