-
Notifications
You must be signed in to change notification settings - Fork 81
/
Copy pathchatcompletionmessage.go
101 lines (89 loc) · 3.88 KB
/
chatcompletionmessage.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
package openai
import (
"context"
"errors"
"fmt"
"net/http"
"net/url"
"github.com/openai/openai-go/internal/apiquery"
"github.com/openai/openai-go/internal/param"
"github.com/openai/openai-go/internal/requestconfig"
"github.com/openai/openai-go/option"
"github.com/openai/openai-go/packages/pagination"
)
// ChatCompletionMessageService contains methods and other services that help with
// interacting with the openai API.
//
// Note, unlike clients, this service does not read variables from the environment
// automatically. You should not instantiate this service directly, and instead use
// the [NewChatCompletionMessageService] method instead.
type ChatCompletionMessageService struct {
Options []option.RequestOption
}
// NewChatCompletionMessageService generates a new service that applies the given
// options to each request. These options are applied after the parent client's
// options (if there is one), and before any request-specific options.
func NewChatCompletionMessageService(opts ...option.RequestOption) (r *ChatCompletionMessageService) {
r = &ChatCompletionMessageService{}
r.Options = opts
return
}
// Get the messages in a stored chat completion. Only chat completions that have
// been created with the `store` parameter set to `true` will be returned.
func (r *ChatCompletionMessageService) List(ctx context.Context, completionID string, query ChatCompletionMessageListParams, opts ...option.RequestOption) (res *pagination.CursorPage[ChatCompletionStoreMessage], err error) {
var raw *http.Response
opts = append(r.Options[:], opts...)
opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...)
if completionID == "" {
err = errors.New("missing required completion_id parameter")
return
}
path := fmt.Sprintf("chat/completions/%s/messages", completionID)
cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, query, &res, opts...)
if err != nil {
return nil, err
}
err = cfg.Execute()
if err != nil {
return nil, err
}
res.SetPageConfig(cfg, raw)
return res, nil
}
// Get the messages in a stored chat completion. Only chat completions that have
// been created with the `store` parameter set to `true` will be returned.
func (r *ChatCompletionMessageService) ListAutoPaging(ctx context.Context, completionID string, query ChatCompletionMessageListParams, opts ...option.RequestOption) *pagination.CursorPageAutoPager[ChatCompletionStoreMessage] {
return pagination.NewCursorPageAutoPager(r.List(ctx, completionID, query, opts...))
}
type ChatCompletionMessageListParams struct {
// Identifier for the last message from the previous pagination request.
After param.Field[string] `query:"after"`
// Number of messages to retrieve.
Limit param.Field[int64] `query:"limit"`
// Sort order for messages by timestamp. Use `asc` for ascending order or `desc`
// for descending order. Defaults to `asc`.
Order param.Field[ChatCompletionMessageListParamsOrder] `query:"order"`
}
// URLQuery serializes [ChatCompletionMessageListParams]'s query parameters as
// `url.Values`.
func (r ChatCompletionMessageListParams) URLQuery() (v url.Values) {
return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{
ArrayFormat: apiquery.ArrayQueryFormatBrackets,
NestedFormat: apiquery.NestedQueryFormatBrackets,
})
}
// Sort order for messages by timestamp. Use `asc` for ascending order or `desc`
// for descending order. Defaults to `asc`.
type ChatCompletionMessageListParamsOrder string
const (
ChatCompletionMessageListParamsOrderAsc ChatCompletionMessageListParamsOrder = "asc"
ChatCompletionMessageListParamsOrderDesc ChatCompletionMessageListParamsOrder = "desc"
)
func (r ChatCompletionMessageListParamsOrder) IsKnown() bool {
switch r {
case ChatCompletionMessageListParamsOrderAsc, ChatCompletionMessageListParamsOrderDesc:
return true
}
return false
}