SwiftOpenAI icon indicating copy to clipboard operation
SwiftOpenAI copied to clipboard

Create new image not work with Assistant Api and also run thread not stop after response

Open ktech643 opened this issue 1 year ago • 1 comments

override init() { super.init() service = OpenAIServiceFactory.service(apiKey: Constants.apiKey, organizationID: Constants.orgId) imagesProvider = ImagesProvider(service: service) provider = AssistantConfigurationProvider(service: service) if Constants.isAssistantCreated == false { Task { parameters.tools.append(AssistantFunctionCallDefinition.createImage.functionTool) parameters.tools.append(AssistantObject.Tool(type: .codeInterpreter)) parameters.name = "Personal Assistant" parameters.description = "My personal AI assistant to answer my questions" parameters.instructions = Constants.aiDescription try await provider.createAssistant(parameters: parameters) Constants.isAssistantCreated = true Constants.assistantId = provider.assistant!.id assistant = provider.assistant! threadProvider = AssistantThreadConfigurationProvider(service: service) try await threadProvider.createThread() if let threadID = threadProvider.thread?.id { tutorialStage = .showStream(threadID: threadID) Constants.isThreadCreated = true Constants.threadId = threadID } } }else { Task { try await provider.getAssistantById(assistantId:Constants.assistantId) assistant = provider.assistant! threadProvider = AssistantThreadConfigurationProvider(service: service) try await threadProvider.createThread() if let threadID = threadProvider.thread?.id { tutorialStage = .showStream(threadID: threadID) Constants.isThreadCreated = true Constants.threadId = threadID } } }

}

This is my sendMessage Function the is function call output without image url and after that not any new message return same response.

func sendMessage(strMessage : String ,handler : @escaping (_ succuss : Bool, _ chatModel : ChatModel?) -> Void) { Task { try await threadProvider.createMessage(threadID: Constants.threadId, parameters: .init(role: .user, content: strMessage)) threadProvider.messageText = "" threadProvider.toolOuptutMessage = "" try await threadProvider.createRunAndStreamMessage( threadID: Constants.threadId, parameters: .init(assistantID: assistant.id)) if let message = threadProvider.message { if !threadProvider.toolOuptutMessage.isEmpty { let senderType = SenderType.assistant let model = ChatModel(strUserName : Constants.username , strMessage: threadProvider.toolOuptutMessage,senderType: senderType) handler(true,model) }else if !threadProvider.messageText.isEmpty { let senderType = SenderType.assistant let model = ChatModel(strUserName : Constants.username , strMessage: threadProvider.messageText,senderType: senderType) handler(true,model) }else if !threadProvider.functionCallOutput.isEmpty { let senderType = SenderType.assistant let model = ChatModel(strUserName : Constants.username , strMessage: threadProvider.functionCallOutput,senderType: senderType) handler(true,model) } } } }

ktech643 avatar May 18 '24 12:05 ktech643

Can you share the netwrok request and response? thanks

jamesrochabrun avatar May 28 '24 23:05 jamesrochabrun