chatcompletionmessage.go

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