From f2c8263a0d734d66fc8b12c91c4ef7941650ee41 Mon Sep 17 00:00:00 2001 From: Robi9 Date: Wed, 14 Feb 2024 15:17:00 -0300 Subject: [PATCH 1/5] Add new chatgpt prompt to preserve product order --- services/external/weni/service.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/services/external/weni/service.go b/services/external/weni/service.go index 74f17b060..e094c182b 100644 --- a/services/external/weni/service.go +++ b/services/external/weni/service.go @@ -210,11 +210,15 @@ func GetProductListFromChatGPT(ctx context.Context, rtConfig *runtime.Config, co Role: chatgpt.ChatMessageRoleSystem, Content: "Ensure that no product names are repeated, and each product should be in singular form without any numbers or quantities.", } + prompt5 := chatgpt.ChatCompletionMessage{ + Role: chatgpt.ChatMessageRoleSystem, + Content: "Preserve the order of products as they appear in the user prompt.", + } question := chatgpt.ChatCompletionMessage{ Role: chatgpt.ChatMessageRoleUser, Content: content, } - completionRequest := chatgpt.NewChatCompletionRequest([]chatgpt.ChatCompletionMessage{prompt1, prompt2, prompt3, prompt4, question}) + completionRequest := chatgpt.NewChatCompletionRequest([]chatgpt.ChatCompletionMessage{prompt1, prompt2, prompt3, prompt4, prompt5, question}) response, trace, err := chatGPTClient.CreateChatCompletion(completionRequest) if err != nil { return nil, trace, errors.Wrapf(err, "error on chatgpt call for list products") From aeff5e2b8e637c0bf5d19378a76869f1392ca61f Mon Sep 17 00:00:00 2001 From: Robi9 Date: Thu, 15 Feb 2024 16:21:52 -0300 Subject: [PATCH 2/5] Change product list structure --- go.mod | 2 +- go.sum | 4 ++-- services/external/weni/service.go | 14 +++++++++++--- services/external/weni/service_test.go | 6 +++--- 4 files changed, 17 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index a04af3cb1..666e9ec76 100644 --- a/go.mod +++ b/go.mod @@ -70,4 +70,4 @@ go 1.17 replace github.com/nyaruka/gocommon => github.com/Ilhasoft/gocommon v1.16.2-weni -replace github.com/nyaruka/goflow => github.com/weni-ai/goflow v0.6.3-goflow-0.144.3 +replace github.com/nyaruka/goflow => github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging diff --git a/go.sum b/go.sum index 3834e2a46..83a0a242b 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLD github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= -github.com/weni-ai/goflow v0.6.3-goflow-0.144.3 h1:YnuWafX2GlipcJxalqg8CLbLuiKXCOTpP30US93HY7g= -github.com/weni-ai/goflow v0.6.3-goflow-0.144.3/go.mod h1:o0xaVWP9qNcauBSlcNLa79Fm2oCPV+BDpheFRa/D40c= +github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging h1:JnbACxi//kSuvhLWPWLZAuCq2MXx9ShB3Acc6ZQRCLc= +github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging/go.mod h1:o0xaVWP9qNcauBSlcNLa79Fm2oCPV+BDpheFRa/D40c= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= diff --git a/services/external/weni/service.go b/services/external/weni/service.go index e094c182b..627336a92 100644 --- a/services/external/weni/service.go +++ b/services/external/weni/service.go @@ -103,8 +103,10 @@ func (s *service) Call(session flows.Session, params assets.MsgCatalogParam, log return callResult, err } - productRetailerIDS := map[string][]string{} + productRetailerIDS := []string{} productRetailerIDMap := make(map[string]struct{}) + var productEntries []flows.ProductEntry + var productEntry flows.ProductEntry searchResult := []string{} var trace *httpx.Trace var traces []*httpx.Trace @@ -127,13 +129,19 @@ func (s *service) Call(session flows.Session, params assets.MsgCatalogParam, log productRetailerID := prod _, exists := productRetailerIDMap[productRetailerID] if !exists { - productRetailerIDS[product] = append(productRetailerIDS[product], productRetailerID) + productRetailerIDS = append(productRetailerIDS, productRetailerID) productRetailerIDMap[productRetailerID] = struct{}{} } } + + productEntry = flows.ProductEntry{ + Product: product, + ProductRetailerIDs: productRetailerIDS, + } + productEntries = append(productEntries, productEntry) } - callResult.ProductRetailerIDS = productRetailerIDS + callResult.ProductRetailerIDS = productEntries return callResult, nil } diff --git a/services/external/weni/service_test.go b/services/external/weni/service_test.go index a123facca..328cc4ede 100644 --- a/services/external/weni/service_test.go +++ b/services/external/weni/service_test.go @@ -120,7 +120,7 @@ func TestService(t *testing.T) { assert.NoError(t, err) assert.NotNil(t, call) fmt.Println(call.ProductRetailerIDS) - assert.Equal(t, "p1", call.ProductRetailerIDS["banana"]) + assert.Equal(t, "p1", call.ProductRetailerIDS[0].ProductRetailerIDs[0]) assert.NotNil(t, call.Traces) params = assets.MsgCatalogParam{ @@ -134,7 +134,7 @@ func TestService(t *testing.T) { call, err = svc.Call(session, params, logger.Log) assert.NoError(t, err) assert.NotNil(t, call) - assert.Equal(t, "1236", call.ProductRetailerIDS["banana"]) + assert.Equal(t, "1236", call.ProductRetailerIDS[0].ProductRetailerIDs[0]) assert.NotNil(t, call.Traces) params = assets.MsgCatalogParam{ @@ -148,6 +148,6 @@ func TestService(t *testing.T) { call, err = svc.Call(session, params, logger.Log) assert.NoError(t, err) assert.NotNil(t, call) - assert.Equal(t, "1234", call.ProductRetailerIDS["banana"]) + assert.Equal(t, "1234", call.ProductRetailerIDS[0].ProductRetailerIDs[0]) assert.NotNil(t, call.Traces) } From bb5ea6e4414e078b5c3aa203442627841cc7834f Mon Sep 17 00:00:00 2001 From: Robi9 Date: Thu, 15 Feb 2024 18:46:05 -0300 Subject: [PATCH 3/5] Remove test --- core/handlers/msg_catalog_created_test.go | 5 ----- 1 file changed, 5 deletions(-) diff --git a/core/handlers/msg_catalog_created_test.go b/core/handlers/msg_catalog_created_test.go index 025a0b5b9..3f593c766 100644 --- a/core/handlers/msg_catalog_created_test.go +++ b/core/handlers/msg_catalog_created_test.go @@ -70,11 +70,6 @@ func TestMsgCatalogCreated(t *testing.T) { testdata.Cathy: msg1, }, SQLAssertions: []handlers.SQLAssertion{ - { - SQL: "SELECT COUNT(*) FROM msgs_msg WHERE contact_id = $1 AND metadata = $2 AND high_priority = TRUE", - Args: []interface{}{testdata.Cathy.ID, `{"action":"View Products","body":"Some products","products":{"product_retailer_id":["9f526c6f-b2cb-4457-8048-a7f1dc101e50","eb2305cc-bf39-43ad-a069-bbbfb6401acc"]},"send_catalog":false}`}, - Count: 2, - }, { SQL: "SELECT COUNT(*) FROM msgs_msg WHERE contact_id = $1 AND status = 'Q' AND high_priority = FALSE", Args: []interface{}{testdata.George.ID}, From d173fa11bf29c5c592f16e75f60dce375ae9b0f0 Mon Sep 17 00:00:00 2001 From: Robi9 Date: Fri, 16 Feb 2024 11:12:55 -0300 Subject: [PATCH 4/5] Empty retailerIDS list --- services/external/weni/service.go | 1 + 1 file changed, 1 insertion(+) diff --git a/services/external/weni/service.go b/services/external/weni/service.go index 627336a92..cf67e293d 100644 --- a/services/external/weni/service.go +++ b/services/external/weni/service.go @@ -139,6 +139,7 @@ func (s *service) Call(session flows.Session, params assets.MsgCatalogParam, log ProductRetailerIDs: productRetailerIDS, } productEntries = append(productEntries, productEntry) + productRetailerIDS = nil } callResult.ProductRetailerIDS = productEntries From 59e796cd3fe5393e1b7cc12b3823ccfbd664e338 Mon Sep 17 00:00:00 2001 From: Robi9 Date: Fri, 16 Feb 2024 16:01:10 -0300 Subject: [PATCH 5/5] Update goflow version to v0.7.0-goflow-0.144.3 --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 666e9ec76..a6fdb3c9d 100644 --- a/go.mod +++ b/go.mod @@ -70,4 +70,4 @@ go 1.17 replace github.com/nyaruka/gocommon => github.com/Ilhasoft/gocommon v1.16.2-weni -replace github.com/nyaruka/goflow => github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging +replace github.com/nyaruka/goflow => github.com/weni-ai/goflow v0.7.0-goflow-0.144.3 diff --git a/go.sum b/go.sum index 83a0a242b..67ec631a6 100644 --- a/go.sum +++ b/go.sum @@ -204,8 +204,8 @@ github.com/tj/assert v0.0.0-20171129193455-018094318fb0/go.mod h1:mZ9/Rh9oLWpLLD github.com/tj/go-elastic v0.0.0-20171221160941-36157cbbebc2/go.mod h1:WjeM0Oo1eNAjXGDx2yma7uG2XoyRZTq1uv3M/o7imD0= github.com/tj/go-kinesis v0.0.0-20171128231115-08b17f58cb1b/go.mod h1:/yhzCV0xPfx6jb1bBgRFjl5lytqVqZXEaeqWP8lTEao= github.com/tj/go-spin v1.1.0/go.mod h1:Mg1mzmePZm4dva8Qz60H2lHwmJ2loum4VIrLgVnKwh4= -github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging h1:JnbACxi//kSuvhLWPWLZAuCq2MXx9ShB3Acc6ZQRCLc= -github.com/weni-ai/goflow v0.6.3-goflow-0.144.3-order-1-staging/go.mod h1:o0xaVWP9qNcauBSlcNLa79Fm2oCPV+BDpheFRa/D40c= +github.com/weni-ai/goflow v0.7.0-goflow-0.144.3 h1:hqrUH+n3XSoJDQoMc4rn+z9kXWVAMCph0nFC1NSx0Y0= +github.com/weni-ai/goflow v0.7.0-goflow-0.144.3/go.mod h1:o0xaVWP9qNcauBSlcNLa79Fm2oCPV+BDpheFRa/D40c= go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=