Skip to content

Commit adf46fb

Browse files
committed
Use RelationshipMap for assistant relationship
1 parent 3f48edf commit adf46fb

2 files changed

Lines changed: 23 additions & 18 deletions

File tree

model/rag/chat.go

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -32,11 +32,11 @@ type ChatPayload struct {
3232
}
3333

3434
type ChatConversation struct {
35-
DocID string `json:"_id"`
36-
DocRev string `json:"_rev,omitempty"`
37-
Messages []ChatMessage `json:"messages"`
38-
Metadata *metadata.CozyMetadata `json:"cozyMetadata"`
39-
RelationshipsMap map[string]interface{} `json:"relationships,omitempty"`
35+
DocID string `json:"_id"`
36+
DocRev string `json:"_rev,omitempty"`
37+
Messages []ChatMessage `json:"messages"`
38+
Metadata *metadata.CozyMetadata `json:"cozyMetadata"`
39+
AssistantID string `json:"assistantID,omitempty"`
4040
}
4141

4242
type ChatMessage struct {
@@ -70,9 +70,21 @@ func (c *ChatConversation) Clone() couchdb.Doc {
7070
copy(cloned.Messages, c.Messages)
7171
return &cloned
7272
}
73-
func (c *ChatConversation) Included() []jsonapi.Object { return nil }
74-
func (c *ChatConversation) Relationships() jsonapi.RelationshipMap { return nil }
75-
func (c *ChatConversation) Links() *jsonapi.LinksList { return nil }
73+
func (c *ChatConversation) Included() []jsonapi.Object { return nil }
74+
func (c *ChatConversation) Relationships() jsonapi.RelationshipMap {
75+
if c.AssistantID == "" {
76+
return nil
77+
}
78+
return jsonapi.RelationshipMap{
79+
"assistant": jsonapi.Relationship{
80+
Data: couchdb.DocReference{
81+
ID: c.AssistantID,
82+
Type: consts.ChatAssistants,
83+
},
84+
},
85+
}
86+
}
87+
func (c *ChatConversation) Links() *jsonapi.LinksList { return nil }
7688

7789
var _ jsonapi.Object = (*ChatConversation)(nil)
7890

@@ -106,16 +118,7 @@ func Chat(inst *instance.Instance, payload ChatPayload) (*ChatConversation, erro
106118
md.DocTypeVersion = DocTypeVersion
107119
md.UpdatedAt = md.CreatedAt
108120
chat.Metadata = md
109-
if payload.AssistantID != "" {
110-
chat.RelationshipsMap = map[string]interface{}{
111-
"assistant": map[string]interface{}{
112-
"data": map[string]interface{}{
113-
"_type": "io.cozy.ai.chat.assistants",
114-
"_id": payload.AssistantID,
115-
},
116-
},
117-
}
118-
}
121+
chat.AssistantID = payload.AssistantID
119122
} else if err != nil {
120123
return nil, err
121124
} else {

pkg/consts/doctype.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,8 @@ const (
142142
// NextCloudFiles doc type is used when listing files from a NextCloud via
143143
// WebDAV.
144144
NextCloudFiles = "io.cozy.remote.nextcloud.files"
145+
// ChatAssistants doc type for AI chat assistants.
146+
ChatAssistants = "io.cozy.ai.chat.assistants"
145147
// ChatConversations doc type is used for a chat between the user and a chatbot.
146148
ChatConversations = "io.cozy.ai.chat.conversations"
147149
// ChatEvents doc type is used for RAG events about a chat conversation.

0 commit comments

Comments
 (0)