Skip to content

Commit 1ce8c5f

Browse files
api-clients-generation-pipeline[bot]ci.datadog-api-spec
andauthored
Add display_block interaction type to LLM Obs annotation queues (#4078)
Co-authored-by: ci.datadog-api-spec <packages@datadoghq.com>
1 parent 2dab374 commit 1ce8c5f

22 files changed

Lines changed: 2798 additions & 601 deletions

.generator/schemas/v2/openapi.yaml

Lines changed: 350 additions & 68 deletions
Large diffs are not rendered by default.

api/datadogV2/api_llm_observability.go

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,16 @@ func (a *LLMObservabilityApi) CreateLLMObsAnnotationQueue(ctx _context.Context,
120120
}
121121

122122
// CreateLLMObsAnnotationQueueInteractions Add annotation queue interactions.
123-
// Add one or more interactions (traces or sessions) to an annotation queue.
124-
// At least one interaction must be provided.
123+
// Add one or more interactions to an annotation queue. At least one
124+
// interaction must be provided. Each interaction has a `type`:
125+
//
126+
// - `trace`, `experiment_trace`, `session`: `content_id` references the
127+
// upstream entity; the server fetches the actual content.
128+
// - `display_block`: omit `content_id` and provide the rendered content
129+
// in `display_block`. The server generates `content_id` as a
130+
// deterministic hash of the block list.
131+
//
132+
// Items of different types can be mixed in a single request.
125133
func (a *LLMObservabilityApi) CreateLLMObsAnnotationQueueInteractions(ctx _context.Context, queueId string, body LLMObsAnnotationQueueInteractionsRequest) (LLMObsAnnotationQueueInteractionsResponse, *_nethttp.Response, error) {
126134
var (
127135
localVarHTTPMethod = _nethttp.MethodPost

api/datadogV2/model_llm_obs_annotated_interaction_item.go

Lines changed: 75 additions & 177 deletions
Original file line numberDiff line numberDiff line change
@@ -5,203 +5,101 @@
55
package datadogV2
66

77
import (
8-
"fmt"
9-
108
"github.com/DataDog/datadog-api-client-go/v2/api/datadog"
119
)
1210

13-
// LLMObsAnnotatedInteractionItem An interaction with its associated annotations.
11+
// LLMObsAnnotatedInteractionItem - An interaction with its associated annotations.
1412
type LLMObsAnnotatedInteractionItem struct {
15-
// List of annotations for this interaction.
16-
Annotations []LLMObsAnnotationItem `json:"annotations"`
17-
// Identifier of the content (trace ID or session ID) for this interaction.
18-
ContentId string `json:"content_id"`
19-
// Unique identifier of the interaction.
20-
Id string `json:"id"`
21-
// Type of interaction in an annotation queue.
22-
Type LLMObsInteractionType `json:"type"`
23-
// UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct
24-
UnparsedObject map[string]interface{} `json:"-"`
25-
AdditionalProperties map[string]interface{} `json:"-"`
26-
}
27-
28-
// NewLLMObsAnnotatedInteractionItem instantiates a new LLMObsAnnotatedInteractionItem object.
29-
// This constructor will assign default values to properties that have it defined,
30-
// and makes sure properties required by API are set, but the set of arguments
31-
// will change when the set of required properties is changed.
32-
func NewLLMObsAnnotatedInteractionItem(annotations []LLMObsAnnotationItem, contentId string, id string, typeVar LLMObsInteractionType) *LLMObsAnnotatedInteractionItem {
33-
this := LLMObsAnnotatedInteractionItem{}
34-
this.Annotations = annotations
35-
this.ContentId = contentId
36-
this.Id = id
37-
this.Type = typeVar
38-
return &this
39-
}
40-
41-
// NewLLMObsAnnotatedInteractionItemWithDefaults instantiates a new LLMObsAnnotatedInteractionItem object.
42-
// This constructor will only assign default values to properties that have it defined,
43-
// but it doesn't guarantee that properties required by API are set.
44-
func NewLLMObsAnnotatedInteractionItemWithDefaults() *LLMObsAnnotatedInteractionItem {
45-
this := LLMObsAnnotatedInteractionItem{}
46-
return &this
47-
}
48-
49-
// GetAnnotations returns the Annotations field value.
50-
func (o *LLMObsAnnotatedInteractionItem) GetAnnotations() []LLMObsAnnotationItem {
51-
if o == nil {
52-
var ret []LLMObsAnnotationItem
53-
return ret
54-
}
55-
return o.Annotations
56-
}
57-
58-
// GetAnnotationsOk returns a tuple with the Annotations field value
59-
// and a boolean to check if the value has been set.
60-
func (o *LLMObsAnnotatedInteractionItem) GetAnnotationsOk() (*[]LLMObsAnnotationItem, bool) {
61-
if o == nil {
62-
return nil, false
63-
}
64-
return &o.Annotations, true
65-
}
66-
67-
// SetAnnotations sets field value.
68-
func (o *LLMObsAnnotatedInteractionItem) SetAnnotations(v []LLMObsAnnotationItem) {
69-
o.Annotations = v
70-
}
71-
72-
// GetContentId returns the ContentId field value.
73-
func (o *LLMObsAnnotatedInteractionItem) GetContentId() string {
74-
if o == nil {
75-
var ret string
76-
return ret
77-
}
78-
return o.ContentId
79-
}
80-
81-
// GetContentIdOk returns a tuple with the ContentId field value
82-
// and a boolean to check if the value has been set.
83-
func (o *LLMObsAnnotatedInteractionItem) GetContentIdOk() (*string, bool) {
84-
if o == nil {
85-
return nil, false
86-
}
87-
return &o.ContentId, true
88-
}
89-
90-
// SetContentId sets field value.
91-
func (o *LLMObsAnnotatedInteractionItem) SetContentId(v string) {
92-
o.ContentId = v
93-
}
13+
LLMObsTraceAnnotatedInteractionItem *LLMObsTraceAnnotatedInteractionItem
14+
LLMObsDisplayBlockAnnotatedInteractionItem *LLMObsDisplayBlockAnnotatedInteractionItem
9415

95-
// GetId returns the Id field value.
96-
func (o *LLMObsAnnotatedInteractionItem) GetId() string {
97-
if o == nil {
98-
var ret string
99-
return ret
100-
}
101-
return o.Id
102-
}
103-
104-
// GetIdOk returns a tuple with the Id field value
105-
// and a boolean to check if the value has been set.
106-
func (o *LLMObsAnnotatedInteractionItem) GetIdOk() (*string, bool) {
107-
if o == nil {
108-
return nil, false
16+
// UnparsedObject contains the raw value of the object if there was an error when deserializing into the struct
17+
UnparsedObject interface{}
18+
}
19+
20+
// LLMObsTraceAnnotatedInteractionItemAsLLMObsAnnotatedInteractionItem is a convenience function that returns LLMObsTraceAnnotatedInteractionItem wrapped in LLMObsAnnotatedInteractionItem.
21+
func LLMObsTraceAnnotatedInteractionItemAsLLMObsAnnotatedInteractionItem(v *LLMObsTraceAnnotatedInteractionItem) LLMObsAnnotatedInteractionItem {
22+
return LLMObsAnnotatedInteractionItem{LLMObsTraceAnnotatedInteractionItem: v}
23+
}
24+
25+
// LLMObsDisplayBlockAnnotatedInteractionItemAsLLMObsAnnotatedInteractionItem is a convenience function that returns LLMObsDisplayBlockAnnotatedInteractionItem wrapped in LLMObsAnnotatedInteractionItem.
26+
func LLMObsDisplayBlockAnnotatedInteractionItemAsLLMObsAnnotatedInteractionItem(v *LLMObsDisplayBlockAnnotatedInteractionItem) LLMObsAnnotatedInteractionItem {
27+
return LLMObsAnnotatedInteractionItem{LLMObsDisplayBlockAnnotatedInteractionItem: v}
28+
}
29+
30+
// UnmarshalJSON turns data into one of the pointers in the struct.
31+
func (obj *LLMObsAnnotatedInteractionItem) UnmarshalJSON(data []byte) error {
32+
var err error
33+
match := 0
34+
// try to unmarshal data into LLMObsTraceAnnotatedInteractionItem
35+
err = datadog.Unmarshal(data, &obj.LLMObsTraceAnnotatedInteractionItem)
36+
if err == nil {
37+
if obj.LLMObsTraceAnnotatedInteractionItem != nil && obj.LLMObsTraceAnnotatedInteractionItem.UnparsedObject == nil {
38+
jsonLLMObsTraceAnnotatedInteractionItem, _ := datadog.Marshal(obj.LLMObsTraceAnnotatedInteractionItem)
39+
if string(jsonLLMObsTraceAnnotatedInteractionItem) == "{}" { // empty struct
40+
obj.LLMObsTraceAnnotatedInteractionItem = nil
41+
} else {
42+
match++
43+
}
44+
} else {
45+
obj.LLMObsTraceAnnotatedInteractionItem = nil
46+
}
47+
} else {
48+
obj.LLMObsTraceAnnotatedInteractionItem = nil
49+
}
50+
51+
// try to unmarshal data into LLMObsDisplayBlockAnnotatedInteractionItem
52+
err = datadog.Unmarshal(data, &obj.LLMObsDisplayBlockAnnotatedInteractionItem)
53+
if err == nil {
54+
if obj.LLMObsDisplayBlockAnnotatedInteractionItem != nil && obj.LLMObsDisplayBlockAnnotatedInteractionItem.UnparsedObject == nil {
55+
jsonLLMObsDisplayBlockAnnotatedInteractionItem, _ := datadog.Marshal(obj.LLMObsDisplayBlockAnnotatedInteractionItem)
56+
if string(jsonLLMObsDisplayBlockAnnotatedInteractionItem) == "{}" { // empty struct
57+
obj.LLMObsDisplayBlockAnnotatedInteractionItem = nil
58+
} else {
59+
match++
60+
}
61+
} else {
62+
obj.LLMObsDisplayBlockAnnotatedInteractionItem = nil
63+
}
64+
} else {
65+
obj.LLMObsDisplayBlockAnnotatedInteractionItem = nil
10966
}
110-
return &o.Id, true
111-
}
112-
113-
// SetId sets field value.
114-
func (o *LLMObsAnnotatedInteractionItem) SetId(v string) {
115-
o.Id = v
116-
}
11767

118-
// GetType returns the Type field value.
119-
func (o *LLMObsAnnotatedInteractionItem) GetType() LLMObsInteractionType {
120-
if o == nil {
121-
var ret LLMObsInteractionType
122-
return ret
68+
if match != 1 { // more than 1 match
69+
// reset to nil
70+
obj.LLMObsTraceAnnotatedInteractionItem = nil
71+
obj.LLMObsDisplayBlockAnnotatedInteractionItem = nil
72+
return datadog.Unmarshal(data, &obj.UnparsedObject)
12373
}
124-
return o.Type
74+
return nil // exactly one match
12575
}
12676

127-
// GetTypeOk returns a tuple with the Type field value
128-
// and a boolean to check if the value has been set.
129-
func (o *LLMObsAnnotatedInteractionItem) GetTypeOk() (*LLMObsInteractionType, bool) {
130-
if o == nil {
131-
return nil, false
77+
// MarshalJSON turns data from the first non-nil pointers in the struct to JSON.
78+
func (obj LLMObsAnnotatedInteractionItem) MarshalJSON() ([]byte, error) {
79+
if obj.LLMObsTraceAnnotatedInteractionItem != nil {
80+
return datadog.Marshal(&obj.LLMObsTraceAnnotatedInteractionItem)
13281
}
133-
return &o.Type, true
134-
}
135-
136-
// SetType sets field value.
137-
func (o *LLMObsAnnotatedInteractionItem) SetType(v LLMObsInteractionType) {
138-
o.Type = v
139-
}
14082

141-
// MarshalJSON serializes the struct using spec logic.
142-
func (o LLMObsAnnotatedInteractionItem) MarshalJSON() ([]byte, error) {
143-
toSerialize := map[string]interface{}{}
144-
if o.UnparsedObject != nil {
145-
return datadog.Marshal(o.UnparsedObject)
83+
if obj.LLMObsDisplayBlockAnnotatedInteractionItem != nil {
84+
return datadog.Marshal(&obj.LLMObsDisplayBlockAnnotatedInteractionItem)
14685
}
147-
toSerialize["annotations"] = o.Annotations
148-
toSerialize["content_id"] = o.ContentId
149-
toSerialize["id"] = o.Id
150-
toSerialize["type"] = o.Type
15186

152-
for key, value := range o.AdditionalProperties {
153-
toSerialize[key] = value
87+
if obj.UnparsedObject != nil {
88+
return datadog.Marshal(obj.UnparsedObject)
15489
}
155-
return datadog.Marshal(toSerialize)
90+
return nil, nil // no data in oneOf schemas
15691
}
15792

158-
// UnmarshalJSON deserializes the given payload.
159-
func (o *LLMObsAnnotatedInteractionItem) UnmarshalJSON(bytes []byte) (err error) {
160-
all := struct {
161-
Annotations *[]LLMObsAnnotationItem `json:"annotations"`
162-
ContentId *string `json:"content_id"`
163-
Id *string `json:"id"`
164-
Type *LLMObsInteractionType `json:"type"`
165-
}{}
166-
if err = datadog.Unmarshal(bytes, &all); err != nil {
167-
return datadog.Unmarshal(bytes, &o.UnparsedObject)
168-
}
169-
if all.Annotations == nil {
170-
return fmt.Errorf("required field annotations missing")
171-
}
172-
if all.ContentId == nil {
173-
return fmt.Errorf("required field content_id missing")
174-
}
175-
if all.Id == nil {
176-
return fmt.Errorf("required field id missing")
177-
}
178-
if all.Type == nil {
179-
return fmt.Errorf("required field type missing")
180-
}
181-
additionalProperties := make(map[string]interface{})
182-
if err = datadog.Unmarshal(bytes, &additionalProperties); err == nil {
183-
datadog.DeleteKeys(additionalProperties, &[]string{"annotations", "content_id", "id", "type"})
184-
} else {
185-
return err
186-
}
187-
188-
hasInvalidField := false
189-
o.Annotations = *all.Annotations
190-
o.ContentId = *all.ContentId
191-
o.Id = *all.Id
192-
if !all.Type.IsValid() {
193-
hasInvalidField = true
194-
} else {
195-
o.Type = *all.Type
196-
}
197-
198-
if len(additionalProperties) > 0 {
199-
o.AdditionalProperties = additionalProperties
93+
// GetActualInstance returns the actual instance.
94+
func (obj *LLMObsAnnotatedInteractionItem) GetActualInstance() interface{} {
95+
if obj.LLMObsTraceAnnotatedInteractionItem != nil {
96+
return obj.LLMObsTraceAnnotatedInteractionItem
20097
}
20198

202-
if hasInvalidField {
203-
return datadog.Unmarshal(bytes, &o.UnparsedObject)
99+
if obj.LLMObsDisplayBlockAnnotatedInteractionItem != nil {
100+
return obj.LLMObsDisplayBlockAnnotatedInteractionItem
204101
}
205102

103+
// all schemas are nil
206104
return nil
207105
}

0 commit comments

Comments
 (0)