Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions Sources/OpenAI/AIProxy/AIProxyService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,15 @@ struct AIProxyService: OpenAIService {
let request = try await OpenAIAPI.message(.modify(threadID: threadID, messageID: messageID)).request(aiproxyPartialKey: partialKey, serviceURL: serviceURL, clientID: clientID, organizationID: organizationID, method: .post, params: parameters, betaHeaderField: Self.assistantsBetaV2)
return try await fetch(debugEnabled: debugEnabled, type: MessageObject.self, with: request)
}

func deleteMessage(
threadID: String,
messageID: String)
async throws -> DeletionStatus
{
let request = try await OpenAIAPI.message(.delete(threadID: threadID, messageID: messageID)).request(aiproxyPartialKey: partialKey, serviceURL: serviceURL, clientID: clientID, organizationID: organizationID, method: .delete, betaHeaderField: Self.assistantsBetaV2)
return try await fetch(debugEnabled: debugEnabled, type: DeletionStatus.self, with: request)
}

func listMessages(
threadID: String,
Expand Down
3 changes: 2 additions & 1 deletion Sources/OpenAI/Azure/AzureOpenAIAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ enum AzureOpenAIAPI {
case create(threadID: String)
case retrieve(threadID: String, messageID: String)
case modify(threadID: String, messageID: String)
case delete(threadID: String, messageID: String)
case list(threadID: String)
}

Expand Down Expand Up @@ -104,7 +105,7 @@ extension AzureOpenAIAPI: Endpoint {
case .message(let category):
switch category {
case .create(let threadID), .list(let threadID): return "/openai/threads/\(threadID)/messages"
case .retrieve(let threadID, let messageID), .modify(let threadID, let messageID): return "/openai/threads/\(threadID)/messages/\(messageID)"
case .retrieve(let threadID, let messageID), .modify(let threadID, let messageID), .delete(let threadID, let messageID): return "/openai/threads/\(threadID)/messages/\(messageID)"
}
case .run(let category):
switch category {
Expand Down
15 changes: 15 additions & 0 deletions Sources/OpenAI/Azure/DefaultOpenAIAzureService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,21 @@ final public class DefaultOpenAIAzureService: OpenAIService {
return try await fetch(debugEnabled: debugEnabled, type: MessageObject.self, with: request)
}

public func deleteMessage(
threadID: String,
messageID: String)
async throws -> DeletionStatus
{
let request = try AzureOpenAIAPI.message(.delete(threadID: threadID, messageID: messageID)).request(
apiKey: apiKey,
organizationID: nil,
method: .delete,
queryItems: initialQueryItems,
betaHeaderField: Self.assistantsBetaV2,
extraHeaders: extraHeaders)
return try await fetch(debugEnabled: debugEnabled, type: DeletionStatus.self, with: request)
}

public func listMessages(threadID: String, limit: Int?, order: String?, after: String?, before: String?, runID: String?) async throws -> OpenAIResponse<MessageObject> {
var queryItems: [URLQueryItem] = initialQueryItems
if let limit {
Expand Down
4 changes: 4 additions & 0 deletions Sources/OpenAI/LocalModelService/LocalModelService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,10 @@ struct LocalModelService: OpenAIService {
fatalError("Currently, this API is not supported. We welcome and encourage contributions to our open-source project. Please consider opening an issue or submitting a pull request to add support for this feature.")
}

func deleteMessage(threadID: String, messageID: String) async throws -> DeletionStatus {
fatalError("Currently, this API is not supported. We welcome and encourage contributions to our open-source project. Please consider opening an issue or submitting a pull request to add support for this feature.")
}

func listMessages(threadID: String, limit: Int?, order: String?, after: String?, before: String?, runID: String?) async throws -> OpenAIResponse<MessageObject> {
fatalError("Currently, this API is not supported. We welcome and encourage contributions to our open-source project. Please consider opening an issue or submitting a pull request to add support for this feature.")
}
Expand Down
3 changes: 2 additions & 1 deletion Sources/OpenAI/Private/Networking/OpenAIAPI.swift
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ enum OpenAIAPI {
case create(threadID: String)
case retrieve(threadID: String, messageID: String)
case modify(threadID: String, messageID: String)
case delete(threadID: String, messageID: String)
case list(threadID: String)
}

Expand Down Expand Up @@ -174,7 +175,7 @@ extension OpenAIAPI: Endpoint {
case .message(let category):
switch category {
case .create(let threadID), .list(let threadID): return "/v1/threads/\(threadID)/messages"
case .retrieve(let threadID, let messageID), .modify(let threadID, let messageID): return "/v1/threads/\(threadID)/messages/\(messageID)"
case .retrieve(let threadID, let messageID), .modify(let threadID, let messageID), .delete(let threadID, let messageID): return "/v1/threads/\(threadID)/messages/\(messageID)"
}
case .model(let category):
switch category {
Expand Down
9 changes: 9 additions & 0 deletions Sources/OpenAI/Public/Service/DefaultOpenAIService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -393,6 +393,15 @@ struct DefaultOpenAIService: OpenAIService {
return try await fetch(debugEnabled: debugEnabled, type: MessageObject.self, with: request)
}

func deleteMessage(
threadID: String,
messageID: String)
async throws -> DeletionStatus
{
let request = try OpenAIAPI.message(.delete(threadID: threadID, messageID: messageID)).request(apiKey: apiKey, organizationID: organizationID, method: .delete, betaHeaderField: Self.assistantsBetaV2)
return try await fetch(debugEnabled: debugEnabled, type: DeletionStatus.self, with: request)
}

func listMessages(
threadID: String,
limit: Int? = nil,
Expand Down
12 changes: 12 additions & 0 deletions Sources/OpenAI/Public/Service/OpenAIService.swift
Original file line number Diff line number Diff line change
Expand Up @@ -479,6 +479,18 @@ public protocol OpenAIService {
parameters: ModifyMessageParameters)
async throws -> MessageObject

/// Deletes a message.
///
/// - Parameter threadID: The ID of the thread to which this message belongs.
/// - Parameter messageID: The ID of the message to modify.
/// - Throws: An error if the request fails.
///
/// For more information, refer to [OpenAI's Message API documentation](https://platform.openai.com/docs/api-reference/messages/deleteMessage).
func deleteMessage(
threadID: String,
messageID: String)
async throws -> DeletionStatus

/// Returns a list of messages for a given thread.
///
/// - Parameter threadID: The ID of the [thread](https://platform.openai.com/docs/api-reference/threads) the messages belong to.
Expand Down
5 changes: 5 additions & 0 deletions Sources/OpenAI/Public/Shared/MessageAttachment.swift
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,9 @@ public struct MessageAttachment: Codable {
case fileID = "file_id"
case tools
}

public init(fileID: String, tools: [AssistantObject.Tool]) {
self.fileID = fileID
self.tools = tools
}
}