当前位置: 首页 > news >正文

OpenAI-Kotlin文档详解

开始

创建 client 的实例

val openai = OpenAI(token = "your-api-key",timeout = Timeout(socket = 60.seconds),// additional configurations...
)
参数详解
参数及其类型说明
token: kotlin.String必需参数,你的 OpenAI API 密钥。这是访问 OpenAI 服务的身份验证令牌。
logging: com.aallam.openai.client.LoggingConfig可选参数,配置 HTTP 请求和响应的日志记录。默认值为COMPILED_CODE,表示使用编译时代码提供的默认配置。
timeout: com.aallam.openai.api.http.Timeout可选参数,配置 HTTP 请求的超时时间,包括连接超时、读取超时和写入超时
organization: kotlin.String?可选参数,OpenAI 组织 ID。如果你属于多个组织,可以指定此参数以使用特定组织的 API 配额
headers: kotlin.collections.Map<kotlin.String, kotlin.String>可选参数,额外的 HTTP 请求头。用于添加自定义元数据或扩展功能
host: com.aallam.openai.client.OpenAIHost可选参数,指定 API 主机地址。默认使用 OpenAI 官方 API 地址,但你可以通过此参数指向自定义代理或兼容 API 的服务
proxy: com.aallam.openai.client.ProxyConfig?可选参数,配置 HTTP 代理服务器。如果你需要通过代理服务器访问 API,可以设置此参数
retry: com.aallam.openai.client.RetryStrategy可选参数,配置请求失败时的重试策略。包括重试次数、间隔时间和触发重试的条件
httpClientConfig: io.ktor.client.HttpClientConfig<*>.() -> kotlin.Unit可选参数,提供 Ktor HTTP 客户端的自定义配置函数。用于更高级的 HTTP 客户端设置

模型

列出模型

列出当前可用的模型,并提供有关每个模型的基本信息,例如所有者和可用性。

import com.aallam.openai.api.model.Model
//...
val models: List<Model> = openAI.models()

检索模型

检索模型实例,提供有关模型的基本信息,例如所有者和权限。

val id = ModelId("text-ada-001")
val model: Model = openAI.model(id)

聊天

给定一个聊天对话,该模型将返回一个聊天完成响应。

创建聊天完成

为聊天消息创建完成。

val chatCompletionRequest = ChatCompletionRequest(model = ModelId("gpt-3.5-turbo"),messages = listOf(ChatMessage(role = ChatRole.System,content = "You are a helpful assistant!"),ChatMessage(role = ChatRole.User,content = "Hello!"))
)
val completion: ChatCompletion = openAI.chatCompletion(chatCompletionRequest)
// or, as flow
val completions: Flow<ChatCompletionChunk> = openAI.chatCompletions(chatCompletionRequest)

 completion存储对话完成的信息,如果需要访问本次对话具体问题的回答字段,需要以下代码获取

response = completion.choices.firstOrNull()?.message?.content

图像

给定提示和/或输入图像,模型将生成新图像。

创建镜像

在给定提示的情况下创建图像。

val images = openAI.imageURL( // or openAI.imageJSONcreation = ImageCreation(prompt = "A cute baby sea otter",model = ModelId("dall-e-3"),n = 2,size = ImageSize.is1024x1024)
)
参数详情
prompt生成图片的提示词
model生成图片所使用的模型
n生成图片个数
size生成图片尺寸,目前只有256x256、512x512、1024x1024三个尺寸,DALL·E 3 特有尺寸:1792x1024和1024x1792

编辑图像

在给定原始图像和提示的情况下创建已编辑或扩展的图像。

val images = openAI.imageURL( // or openAI.imageJSONedit = ImageEdit(image = FileSource(name = "<filename>", source = imageSource),model = ModelId("dall-e-2"),mask = FileSource(name = "<filename>", source = maskSource),prompt = "a sunlit indoor lounge area with a pool containing a flamingo",n = 1,size = ImageSize.is1024x1024)
)
参数详解
image原始基础图像
model

默认:dall-e-2

mask

定义原始图像中哪些区域需要修改

规则:

遮罩区域将被修改

非遮罩区域(黑色部分)保持不变

必须是 RGBA PNG(带透明通道)

prompt描述最终图像的文本指令
n生成不同变体的数量
size图片尺寸

创建图像变体

创建给定图像的变体。

val images = openAI.imageURL( // or openAI.imageJSONvariation = ImageVariation(image = FileSource(name = "<filename>", source = imageSource),model = ModelId("dall-e-3"),n = 1,size = ImageSize.is1024x1024)
)

嵌入

获取给定输入的向量表示形式,机器学习模型和算法可以轻松使用该向量表示形式。

创建嵌入

创建表示输入文本的嵌入向量。

val embeddings = openAI.embeddings(request = EmbeddingRequest(model = ModelId("text-similarity-babbage-001"),input = listOf("The food was delicious and the waiter..."))
)

微调

管理微调作业,以根据您的特定训练数据定制模型。

创建微调作业

创建一个作业,用于从给定数据集微调指定模型。

响应包括已排队作业的详细信息,包括作业状态和完成后微调模型的名称。

无超参数

val request = FineTuningRequest(trainingFile = FileId("file-abc123"),model = ModelId("gpt-3.5-turbo"),
)
val fineTuningJob = client.fineTuningJob(request)

超参数

val request = FineTuningRequest(trainingFile = FileId("file-abc123"),model = ModelId("gpt-3.5-turbo"),hyperparameters = Hyperparameters(nEpochs = 2),
)
val fineTuningJob = client.fineTuningJob(request)

验证文件

val request = FineTuningRequest(trainingFile = FileId("file-abc123"),validation_file = FileId("file-def345"),model = ModelId("gpt-3.5-turbo"),
)
val fineTuningJob = client.fineTuningJob(request)

列出微调作业

列出组织的微调作业

val fineTuningJobs = client.fineTuningJobs(limit = 2)

检索微调作业

获取有关微调作业的信息。

val id = FineTuningId("ft-AF1WoRqd3aJAHsqc9NY7iL8F")
val fineTuningJob = client.fineTuningJob(id)

取消微调

立即取消微调作业。

val id = FineTuningId("ftjob-abc12")
client.cancel(id)

列出微调事件

获取微调作业的状态更新。

val id = FineTuningId("ftjob-abc12")
val fineTuningEvents = client.fineTuningEvents(id)

文件

Files 用于上传可与 Fine-tuning 等功能一起使用的文档。

列出文件

返回属于用户组织的文件列表。

val files = openAI.files()

上传文件

上传包含要跨各种端点/功能使用的文档的文件。 目前,一个组织上传的所有文件的大小最大为 1 GB。

val file = openAI.file(request = FileUpload(file = source,purpose = Purpose("fine-tune"))
)

删除文件

删除文件。

openAI.delete(fileId)

检索文件

返回有关特定文件的信息。

val file = openAI.file(fileId)

检索文件内容

返回指定文件的内容

val bytes = openAI.download(fileId)

审核

给定输入文本,如果模型将其归类为违反 OpenAI 的内容策略,则输出。

创建审核

对文本是否违反 OpenAI 的内容策略进行分类

val moderation = openAI.moderations(request = ModerationRequest(input = "I want to kill them.")
)


完成

给定提示,模型将返回一个或多个预测完成,并且还可以返回 每个位置的替代代币。

创建完成请求

为提供的提示和参数创建补全

val completionRequest = CompletionRequest(model = ModelId("text-ada-001"),prompt = "Somebody once told me the world is gonna roll me",echo = true
)
val completion: TextCompletion = openAI.completion(completionRequest)
// or, as flow
val completions: Flow<TextCompletion> = openAI.completions(completionRequest)

线程

创建助理可以与之交互的线程。

创建线程

创建带有提示和说明的线程。

val thread = openAI.thread()

检索线程

检索线程。

val thread = openAI.thread(id = ThreadId("thread_abc123"))

修改线程

修改线程。

val thread = openAI.thread(id = ThreadId("thread_abc123"),metadata = mapOf("modified" to "true","user" to "abc123")
)

删除线程

删除线程。

openAI.delete(id = ThreadId("thread_abc123"))

消息

在话题中创建消息

创建消息

创建消息。

val message = openAI.message(threadId = ThreadId("thread_abc123"),request = MessageRequest(role = Role.User,content = "How does AI work? Explain it in simple terms.",)
)

检索消息

检索消息。

val message = openAI.message(threadId = ThreadId("thread_abc123"),messageId = MessageId("message_abc123")
)

修改消息

修改消息。

val message = openAI.message(threadId = ThreadId("thread_abc123"),messageId = MessageId("message_abc123"),metadata = mapOf("modified" to "true","user" to "abc123")
)

列出消息

返回给定线程的消息列表。

val messages = openAI.messages(threadId = ThreadId("thread_abc123"))

检索消息文件

附加到 message 的文件列表

val messageFile = openAI.messageFile(threadId = ThreadId("thread_abc123"),messageId = MessageId("message_abc123"),fileId = FileId("file_abc123")
)

列出消息文件

返回消息文件列表。

val messageFiles = openAI.messageFiles(threadId = ThreadId("thread_abc123"),messageId = MessageId("message_abc123")
)

运行

表示在线程上运行的执行。

创建运行

创建运行。

val run = openAI.createRun(threadId = ThreadId("thread_abc123"),request = RunRequest(assistantId = AssistantId("assistant_abc123")),
)

检索运行

检索运行。

val run = openAI.getRun(threadId = ThreadId("thread_abc123"),runId = RunId("run_abc123")
)

修改运行

修改运行。

val run = openAI.updateRun(threadId = ThreadId("thread_abc123"),runId = RunId("run_abc123"),metadata = mapOf("user_id" to "user_abc123")
)

列出运行

返回属于线程的运行列表。

val runs = openAI.runs(threadId = ThreadId("thread_abc123"))

取消运行

取消Status.InProgress

openAI.cancel(threadId = ThreadId("thread_abc123"),runId = RunId("run_abc123")
)

创建线程并运行

创建一个线程并在一个请求中运行它。

openAI.createThreadRun(request = ThreadRunRequest(assistantId = AssistantId("asst_abc123"),thread = ThreadRequest(messages = listOf(ThreadMessage(role = Role.User,content = "Explain deep learning to a 5 year old."))),)
)

检索运行步骤

检索运行步骤。

val runStep = openAI.runStep(threadId = ThreadId("thread_abc123"),runId = RunId("run_abc123"),stepId = RunStepId("step_abc123")
)

列出运行步骤

返回属于运行的运行步骤列表。

val runSteps = openAI.runSteps(threadId = ThreadId("thread_abc123"),runId = RunId("run_abc123")
)

事件流式处理

创建一个线程并在一个请求中运行它,并处理流式处理事件

openAI.createStreamingThreadRun(request = ThreadRunRequest(assistantId = AssistantId("asst_abc123"),thread = ThreadRequest(messages = listOf(ThreadMessage(role = Role.User,content = "Explain deep learning to a 5 year old."))),).onEach { assistantStreamEvent: AssistantStreamEvent -> println(assistantStreamEvent) }.collect()
)

从 AssistantStreamEvent 获取数据对象。

//Type of data for generic type can be found in AssistantStreamEventType
when(assistantStreamEvent.type) {AssistantStreamEventType.THREAD_CREATED -> {val thread = assistantStreamEvent.getData<Thread>()...}AssistantStreamEventType.MESSAGE_CREATED -> {val message = assistantStreamEvent.getData<Message>()...}AssistantStreamEventType.UNKNOWN -> {//Data field is a string and can be used instead of calling getDataval data = assistantStreamEvent.data//Handle unknown message type}
}

如果在更新库之前发布了新的事件类型,则可以通过提供 KSerializer 来创建和反序列化自己的类型。

when(assistantStreamEvent.type) {AssistantStreamEventType.UNKNOWN -> {val data = assistantStreamEvent.getDate<MyCustomType>(myCustomSerializer)...}
}

详见openai-kotlin的GitHub主页aallam/openai-kotlin:适用于 Kotlin 的 OpenAI API 客户端,具有多平台和协程功能。

相关文章:

  • 石家庄外贸网站推广搜索引擎名词解释
  • 上海 网站建设优化设计数学
  • 做网站建设的注意事项什么是百度竞价排名服务
  • 网站建设犀牛云seo推广优化外包公司
  • 如何寻找做网站的客户广告牌
  • 北京 网站制作球队排名榜实时排名
  • 基于目标驱动的分布式敏捷开发
  • 顺序表整理和单项链表01 day20
  • 华为云Flexus+DeepSeek征文 | 基于华为云的 Dify-LLM 企业级 AI 开发平台部署指南
  • AI 产品部署和交付的基础设施——全景解析
  • 【Linux手册】环境变量与命令行参数:贯穿系统与应用的隐形桥梁
  • 09.【C语言学习笔记】指针(一)
  • Spring Ai Alibaba Graph实现五大工作流模式
  • 马克思主义基本原理期末复习下
  • Tomcat服务
  • 60天python训练营打卡day41
  • # Python中等于号的使用
  • 创建首个 Spring Boot 登录项目
  • VSCode源码解析-程序的启动逻辑
  • 彻底拆解 Vue scoped 指令:从编译原理到工程实践的全链路解析
  • 【Spring底层分析】AOP的cligb代理和jdk代理
  • 逆向入门(7)汇编篇-mul指令的学习
  • 《C++》命名空间简述
  • 云电脑,“死”于AI时代前夕 | 数智化观察
  • JVM(12)——详解G1垃圾回收器
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月24日第118弹