Initialize module and dependencies
This commit is contained in:
171
vendor/github.com/sashabaranov/go-openai/thread.go
generated
vendored
Normal file
171
vendor/github.com/sashabaranov/go-openai/thread.go
generated
vendored
Normal file
@@ -0,0 +1,171 @@
|
||||
package openai
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
const (
|
||||
threadsSuffix = "/threads"
|
||||
)
|
||||
|
||||
type Thread struct {
|
||||
ID string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
CreatedAt int64 `json:"created_at"`
|
||||
Metadata map[string]any `json:"metadata"`
|
||||
ToolResources ToolResources `json:"tool_resources,omitempty"`
|
||||
|
||||
httpHeader
|
||||
}
|
||||
|
||||
type ThreadRequest struct {
|
||||
Messages []ThreadMessage `json:"messages,omitempty"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
ToolResources *ToolResourcesRequest `json:"tool_resources,omitempty"`
|
||||
}
|
||||
|
||||
type ToolResources struct {
|
||||
CodeInterpreter *CodeInterpreterToolResources `json:"code_interpreter,omitempty"`
|
||||
FileSearch *FileSearchToolResources `json:"file_search,omitempty"`
|
||||
}
|
||||
|
||||
type CodeInterpreterToolResources struct {
|
||||
FileIDs []string `json:"file_ids,omitempty"`
|
||||
}
|
||||
|
||||
type FileSearchToolResources struct {
|
||||
VectorStoreIDs []string `json:"vector_store_ids,omitempty"`
|
||||
}
|
||||
|
||||
type ToolResourcesRequest struct {
|
||||
CodeInterpreter *CodeInterpreterToolResourcesRequest `json:"code_interpreter,omitempty"`
|
||||
FileSearch *FileSearchToolResourcesRequest `json:"file_search,omitempty"`
|
||||
}
|
||||
|
||||
type CodeInterpreterToolResourcesRequest struct {
|
||||
FileIDs []string `json:"file_ids,omitempty"`
|
||||
}
|
||||
|
||||
type FileSearchToolResourcesRequest struct {
|
||||
VectorStoreIDs []string `json:"vector_store_ids,omitempty"`
|
||||
VectorStores []VectorStoreToolResources `json:"vector_stores,omitempty"`
|
||||
}
|
||||
|
||||
type VectorStoreToolResources struct {
|
||||
FileIDs []string `json:"file_ids,omitempty"`
|
||||
ChunkingStrategy *ChunkingStrategy `json:"chunking_strategy,omitempty"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type ChunkingStrategy struct {
|
||||
Type ChunkingStrategyType `json:"type"`
|
||||
Static *StaticChunkingStrategy `json:"static,omitempty"`
|
||||
}
|
||||
|
||||
type StaticChunkingStrategy struct {
|
||||
MaxChunkSizeTokens int `json:"max_chunk_size_tokens"`
|
||||
ChunkOverlapTokens int `json:"chunk_overlap_tokens"`
|
||||
}
|
||||
|
||||
type ChunkingStrategyType string
|
||||
|
||||
const (
|
||||
ChunkingStrategyTypeAuto ChunkingStrategyType = "auto"
|
||||
ChunkingStrategyTypeStatic ChunkingStrategyType = "static"
|
||||
)
|
||||
|
||||
type ModifyThreadRequest struct {
|
||||
Metadata map[string]any `json:"metadata"`
|
||||
ToolResources *ToolResources `json:"tool_resources,omitempty"`
|
||||
}
|
||||
|
||||
type ThreadMessageRole string
|
||||
|
||||
const (
|
||||
ThreadMessageRoleAssistant ThreadMessageRole = "assistant"
|
||||
ThreadMessageRoleUser ThreadMessageRole = "user"
|
||||
)
|
||||
|
||||
type ThreadMessage struct {
|
||||
Role ThreadMessageRole `json:"role"`
|
||||
Content string `json:"content"`
|
||||
FileIDs []string `json:"file_ids,omitempty"`
|
||||
Attachments []ThreadAttachment `json:"attachments,omitempty"`
|
||||
Metadata map[string]any `json:"metadata,omitempty"`
|
||||
}
|
||||
|
||||
type ThreadAttachment struct {
|
||||
FileID string `json:"file_id"`
|
||||
Tools []ThreadAttachmentTool `json:"tools"`
|
||||
}
|
||||
|
||||
type ThreadAttachmentTool struct {
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
type ThreadDeleteResponse struct {
|
||||
ID string `json:"id"`
|
||||
Object string `json:"object"`
|
||||
Deleted bool `json:"deleted"`
|
||||
|
||||
httpHeader
|
||||
}
|
||||
|
||||
// CreateThread creates a new thread.
|
||||
func (c *Client) CreateThread(ctx context.Context, request ThreadRequest) (response Thread, err error) {
|
||||
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(threadsSuffix), withBody(request),
|
||||
withBetaAssistantVersion(c.config.AssistantVersion))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = c.sendRequest(req, &response)
|
||||
return
|
||||
}
|
||||
|
||||
// RetrieveThread retrieves a thread.
|
||||
func (c *Client) RetrieveThread(ctx context.Context, threadID string) (response Thread, err error) {
|
||||
urlSuffix := threadsSuffix + "/" + threadID
|
||||
req, err := c.newRequest(ctx, http.MethodGet, c.fullURL(urlSuffix),
|
||||
withBetaAssistantVersion(c.config.AssistantVersion))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = c.sendRequest(req, &response)
|
||||
return
|
||||
}
|
||||
|
||||
// ModifyThread modifies a thread.
|
||||
func (c *Client) ModifyThread(
|
||||
ctx context.Context,
|
||||
threadID string,
|
||||
request ModifyThreadRequest,
|
||||
) (response Thread, err error) {
|
||||
urlSuffix := threadsSuffix + "/" + threadID
|
||||
req, err := c.newRequest(ctx, http.MethodPost, c.fullURL(urlSuffix), withBody(request),
|
||||
withBetaAssistantVersion(c.config.AssistantVersion))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = c.sendRequest(req, &response)
|
||||
return
|
||||
}
|
||||
|
||||
// DeleteThread deletes a thread.
|
||||
func (c *Client) DeleteThread(
|
||||
ctx context.Context,
|
||||
threadID string,
|
||||
) (response ThreadDeleteResponse, err error) {
|
||||
urlSuffix := threadsSuffix + "/" + threadID
|
||||
req, err := c.newRequest(ctx, http.MethodDelete, c.fullURL(urlSuffix),
|
||||
withBetaAssistantVersion(c.config.AssistantVersion))
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
err = c.sendRequest(req, &response)
|
||||
return
|
||||
}
|
||||
Reference in New Issue
Block a user