All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonMain.com.aallam.openai.client.Assistants.kt Maven / Gradle / Ivy

There is a newer version: 4.0.0-beta01
Show newest version
package com.aallam.openai.client

import com.aallam.openai.api.BetaOpenAI
import com.aallam.openai.api.assistant.Assistant
import com.aallam.openai.api.assistant.AssistantFile
import com.aallam.openai.api.assistant.AssistantId
import com.aallam.openai.api.assistant.AssistantRequest
import com.aallam.openai.api.core.SortOrder
import com.aallam.openai.api.file.FileId

/**
 * Build assistants that can call models and use tools to perform tasks.
 */
@BetaOpenAI
public interface Assistants {

    /**
     * Create an assistant with a model and instructions.
     *
     * @param request the request to create an assistant.
     */
    @BetaOpenAI
    public suspend fun assistant(request: AssistantRequest): Assistant

    /**
     * Retrieves an assistant.
     *
     * @param id the ID of the assistant to retrieve.
     */
    @BetaOpenAI
    public suspend fun assistant(id: AssistantId): Assistant?

    /**
     * Update an assistant.
     *
     * @param id rhe ID of the assistant to modify.
     */
    @BetaOpenAI
    public suspend fun assistant(id: AssistantId, request: AssistantRequest): Assistant

    /**
     * Delete an assistant.
     *
     * @param id ID of the assistant to delete.
     */
    @BetaOpenAI
    public suspend fun delete(id: AssistantId): Boolean

    /**
     * Returns a list of assistants.
     *
     * @param limit a limit on the number of objects to be returned. The Limit can range between 1 and 100, and the default is 20.
     * @param order sort order by the `createdAt` timestamp of the objects. [SortOrder.Ascending] for ascending order
     * and [SortOrder.Descending] for descending order.
     * @param after a cursor for use in pagination. `after` is an object ID that defines your place in the list.
     * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can
     * include `after = AssistantId("obj_foo")` in order to fetch the next page of the list.
     * @param before a cursor for use in pagination. Before is an object ID that defines your place in the list.
     * For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can
     * include `before = AssistantId("obj_foo")` in order to fetch the previous page of the list.
     */
    @BetaOpenAI
    public suspend fun assistants(
        limit: Int? = null,
        order: SortOrder? = null,
        after: AssistantId? = null,
        before: AssistantId? = null,
    ): List

    /**
     * Create an assistant file by attaching a File to an assistant.
     *
     * @param assistantId the ID of the assistant for which to create a File.
     * @param fileId a File ID (with purpose="assistants") that the assistant should use.
     * Useful for tools like retrieval and code interpreter that can access files.
     */
    @BetaOpenAI
    public suspend fun createFile(assistantId: AssistantId, fileId: FileId): AssistantFile

    /**
     * Retrieves an [AssistantFile].
     *
     * @param assistantId the ID of the assistant who the file belongs to.
     * @param fileId the ID of the file we're getting.
     */
    @BetaOpenAI
    public suspend fun file(assistantId: AssistantId, fileId: FileId): AssistantFile

    /**
     * Delete an assistant file.
     *
     * @param assistantId the ID of the assistant that the file belongs to.
     * @param fileId the ID of the file to delete.
     */
    @BetaOpenAI
    public suspend fun delete(assistantId: AssistantId, fileId: FileId): Boolean

    /**
     * Returns a list of assistant files.
     *
     * @param id the ID of the assistant the file belongs to.
     * @param limit a limit on the number of objects to be returned. The Limit can range between 1 and 100, and the default is 20.
     * @param order sort order by the `createdAt` timestamp of the objects. [SortOrder.Ascending] for ascending order
     * and [SortOrder.Descending] for descending order.
     * @param after a cursor for use in pagination. `after` is an object ID that defines your place in the list.
     * For instance, if you make a list request and receive 100 objects, ending with obj_foo, your subsequent call can
     * include `after = FileId("obj_foo")` in order to fetch the next page of the list.
     * @param before a cursor for use in pagination. Before is an object ID that defines your place in the list.
     * For instance, if you make a list request and receive 100 objects, ending with `obj_foo`, your subsequent call can
     * include `before = FileId("obj_foo")` in order to fetch the previous page of the list.
     */
    @BetaOpenAI
    public suspend fun files(
        id: AssistantId,
        limit: Int? = null,
        order: SortOrder? = null,
        after: FileId? = null,
        before: FileId? = null,
    ): List
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy