在与大型语言模型(LLM)交互时,一个常见的需求是从非结构化文本中提取信息并将其转换为结构化数据,例如 JSON。虽然我们可以在提示(Prompt)中要求模型返回 JSON,但结果有时并不可靠。...本教程将通过一个实用的 Python 示例,带你一步步学习如何安全、可靠地调用 API 并获得稳定的 JSON 输出。你将学到:使用 .env 文件安全地管理你的 API 密钥。...从 .env 文件加载环境变量 --- load_dotenv() # 使用 os.getenv() 安全地获取配置 api_key = os.getenv("API_KEY")...2.4 解析并使用结果API 返回的是一个 JSON 格式的字符串。我们需要将其解析为 Python 字典才能方便地使用。 # ... 接上文 ......界智通(jieagi)总结与拓展通过本教程,你掌握了使用 OpenAI API 的 JSON 模式来获取结构化数据的核心技巧。关键要点回顾:安全第一: 始终使用环境变量(.env 文件)管理敏感信息。
KMP使用expect 和 actual 关键字 在 Kotlin Multiplatform 项目中,expect 和 actual 关键字被用于处理不同平台的 API 调用。...以下是如何使用这些关键字的详细步骤和规则: 1、 定义预期声明(Expected Declarations): 在共通代码集中(例如 commonMain),使用 expect 关键字声明一个结构,这可以是函数...这在不希望将 API 公开给所有用户时非常有用。从 Kotlin 2.0 开始,编译器不再限制可见性的变化。...通过这种方式,Kotlin Multiplatform 允许开发者编写可在多个平台上运行的共享代码,同时保留对每个平台特定 API 的访问能力,实现代码的最大化重用和原生性能的结合。...代码示例 以下是一个使用 expect 和 actual 关键字在 Kotlin Multiplatform 项目中处理不同平台 API 调用的代码示例: 共通代码 (commonMain): // 预期声明
关于AndroidQF AndroidQF,全称为Android快速取证(Android Quick Forensics)工具,这是一款便携式工具,可以帮助广大研究人员快速从目标Android设备中获取相关的信息安全取证数据...AndroidQF旨在给广大研究人员提供一个简单且可移植的跨平台实用程序,以快速从Android设备获取信息安全取证数据。...工具下载 广大研究人员可以直接访问该项目的【Releases页面】下载获取最新版本的AndroidQF。...文件; · “dumpsys” Shell命令的执行输出,可以提供设备相关的诊断信息; · “getprop” Shell命令的执行输出,可以提供构建信息和配置参数; · “ps” Shell命令的输出结果...获取到加密的取证文件之后,我们可以使用下列方式进行解密: $ age --decrypt -i ~/path/to/privatekey.txt -o .zip .zip.age
Android Studio创建一个KMM项目,如果你不知道如何创建一个KMM项目,可以参照之前的这篇文章KMM的初次尝试~ ,项目目录结构如下所示。...kotlin("android").version("1.8.0").apply(false) 再次运行项目,结果如下图所示。...object Api { val dataApi = "https://wanandroid.com/wenda/list/1/json" } 创建HttpUtil类,用于创建HttpClient...title}") } } } 分别运行iOS、Android程序,点击请求数据按钮,结果如下图: 这样我们就用一套代码,实现了在双端的网络请求功能。...因此,从第四弹开始,此系列将更名为:Kotin跨平台第N弹:~ 写在最后 从自身体验来讲,我觉得KMM+Compose-jb 对Android开发者来说是非常友好的,不需要像Flutter那样还需要额外学习
例如,地区列表是从服务端获取的JSON数据,因此,需要有相应的类来完成从网络上获取数据的工作,而且获取的是JSON格式的数据。因此,在使用这些数据之前,需要先将其转换为Kotlin类。...本节除了实现ChooseAreaFragment类外,还会讲解如何实现这些辅助类。 描述城市信息的数据类 从服务端获取的地区信息有3个级别:省、市和县区。这3个级别分别需要一个数据类描述。...格式的城市列表信息 当JSON格式的数据从服务端获取后,需要对这些数据进行解析。...第4个方法用于分析描述天气信息的JSON数据,而且未使用Android SDK标准的API进行分析,而是使用了gson开源库对JSON数据进行分析,并返回一个Weather对象,Weather类与其他相关类的定义需要符合...总之,这些类是由服务端返回的JSON格式天气信息决定的。获取天气信息的URL格式如下: https://geekori.com/api/weather/?
我们这里仅运行Android程序,运行结果如下图所示。 这个结果来自shared模块中commonMain下的Greeting文件,代码如下所示。...实现元旦倒计时 接着我们看如何实现元旦倒计时的功能,其实就是计算现在距离元旦还有多少天。...object Api { val dataApi = "https://wanandroid.com/wenda/list/1/json" } 创建HttpUtil类,用于创建HttpClient...对象和获取数据的方法,代码如下所示。... = true }) } } /** * 获取数据 */ suspend fun getData(): String
无独有偶,谷歌近日也宣布推出两个 Kotlin 免费在线课程,正如苹果将 iOS 开发人员从 Objective-C 转移到 Swift,谷歌也在将 Android 开发者从 Java 转移到 Kotlin...,从基本知识开始,比如如何编写 Kotlin 语句,以及如何处理函数操作等等,完成 Kotlin 语言的学习后,该课程还有为使用 Kotlin 开发 Android 应用提供所需的基础。...谷歌为使用 Kotlin 开发 Android 应用提供了一流的支持,包括 Kotlin 的 Android API 和 API 扩展。 ?...Building Android apps in Kotlin 这套课程是针对如何使用 Kotlin 进行 Android 开发,从 “Hello World”开始由浅入深,本课程从在一个屏幕上构建基本的交互式用户界面开始...还有使用库来简化常见的任务,例如用于图像加载的 Glide、用于网络的 Retroeft 以及用于 JSON 解析的 Moshi。
无独有偶,谷歌近日也宣布推出两个 Kotlin 免费在线课程,正如苹果将 iOS 开发人员从 Object-C 转移到 Swift,谷歌也在将 Android 开发者从 Java 转移到 Kotlin。...,从基本知识开始,比如如何编写 Kotlin 语句,以及如何处理函数操作等等,完成 Kotlin 语言的学习后,该课程还有为使用 Kotlin 开发 Android 应用提供所需的基础。...谷歌为使用 Kotlin 开发 Android 应用提供了一流的支持,包括 Kotlin 的 Android API 和 API 扩展。...Building Android apps in Kotlin 这套课程是针对如何使用 Kotlin 进行 Android 开发,从 “Hello World”开始由浅入深,本课程从在一个屏幕上构建基本的交互式用户界面开始...还有使用库来简化常见的任务,例如用于图像加载的 Glide、用于网络的 Retroeft 以及用于 JSON 解析的 Moshi。
这个模型很像客户端和服务器之间的通讯,客户端和服务器约定好服务的接口(REST API),客户端传递参数调用服务,服务端返回调用结果,在通讯链路上传递的数据是双方都支持的 JSON 格式。...后端会提供一个 API 获取电影列表。假设 API 是 GET /api/v1/get_movies(我杜撰的)。...reqwest 从后端 API 获取数据并 cache 之。...比如为 get_movies() 获取到的数据做简单的索引,方便数据在各个不同维度的展示和过滤。 如何维护这样的「后端」代码?...结果发现 Kotlin Native 运行的时候直接超时(可能是 语言的 bug): ?
详细步骤 第 1 步:在 Android Studio 中创建一个新项目 要在 Android Studio 中创建新项目,以 Kotlin 作为编程语言为例。...第 2 步:在 build.gradle 文件中添加以下依赖项 下面是 Volley 的依赖项,我们将使用它从 API 获取数据。...我们使用 Picasso 依赖项从 URL 加载图像。...导航到以下URL (openai获取你的api key),只需使用您的电子邮件和密码注册即可。在此屏幕上单击创建新密钥以生成新密钥。生成您的密钥后,我们必须将其用作制作 API 密钥的令牌。...import com.google.android.material.textfield.TextInputEditText import org.json.JSONObject class MainActivity
作者 / Yacine Rezgui 无论您是在应用中请求某项权限,从文件管理系统中选择某个文件,还是期望从第三方应用中获取到某些数据,都会涉及到在 Activity 之间传递数据,而这也正是 Android...之前,想要从启动的 Activity 中获取到返回结果,应用需要在 Activity 和 Fragment 中实现 onActivityResult() 方法,然后检查回调关联到哪一个 requestCode...ActivityResult API https://developer.android.google.cn/reference/kotlin/androidx/activity/result/package-summary...basics/intents/result#custom ActivityResult API 提供了一些组件用于注册 Activity 的处理结果、发起请求以及在系统返回结果后立即进行相应处理。...您也可以在启动 Activity 的地方使用一个独立的类接收返回结果,这样依然能够保证类型安全。 如何使用 接下来我们通过一个打开文档的示例,来演示如何使用 ActivityResult API。
本文是介绍 Android 协程系列中的第一部分,主要会介绍协程是如何工作的,它们主要解决什么问题。 协程用来解决什么问题?...让我们来深入上述问题,看看该如何将协程运用到我们代码中。 处理耗时任务 获取网页内容或与远程 API 交互都会涉及到发送网络请求,从数据库里获取数据或者从磁盘中读取图片资源涉及到文件的读取操作。...get 方法是如何做到不等待网络请求和线程阻塞而返回结果的?其实,是 Kotlin 中的协程提供了这种执行代码而不阻塞主线程的方法。 协程在常规函数的基础上新增了两项操作。...但是在我们的 Android 应用中有很多的事情处理起来太慢,是不应该放在主线程上去做的,比如网络请求、解析 JSON 数据、从数据库中进行读写操作,甚至是遍历比较大的数组。...接下来的文章中我们将继续探讨协程在 Android 中是如何使用的,感兴趣的读者请继续关注。
API 获取绝对路径后,写入 def 文件,该 Task 的触发时机需要设置为 build task 运行之前。...MMKV 原本的 API 又进行了一层封装,可以使业务团队无缝的从 SharedPreference 与 NSUserDefaults 迁移至 MMKV,不过由于要兼容旧代码导致两端的 API 设计有所不同...机票 KMM 工程作为一个无需兼容旧代码的新工程,决定直接封装 MMKV API 来作为工程的底层存储框架,这里作为一个简单的 demo 来说明如何桥接封装现有的 Android、iOS 库。...这个问题导致的直接结果就是同一份代码在能通过编译的情况下,在 Android 端可以正常运行,但在 iOS 端则会 crash。...这个问题带来的另一个问题是,在 Kotlin 工程中,所有的 Kotlin 对象都无法获取自身的 class 对象。
cleartextTrafficPermitted="true" /> 然后在AndroidManifest.xml中的application标签中配置它,如图所示: 从Android...包,model包下我们可以通过刚才使用网页访问API拿到的JSON数据来生成一个数据类。...① 生成数据类 生成数据类,这里我们可以使用一个插件,搜索JSON To Kotlin Class,如下图所示: 下载安装之后,如果需要重启,你就重启AS,重启之后,右键点击model → New...→ Kotlin data class File from JSON,如图所示: 在出现的弹窗中复制通过网页请求得到的JSON数据字符串,如图所示: 这里如果觉得看起来不舒服,点击 Format...作为网络接口请求的地址头,然后构建了MoShi,通过MoShi去进行JSON转Kotlin数据类的处理,之后就是构建Retrofit,将MoShi设置进去,最后就是通过Retrofit创建一个网络请求服务
View 要显示的数据从Adapter里面获取并展现出来。Adapter负责把真实的数据是配成一个个View,也就是说View要显示什么数据取决于Adapter里面的数据。...:context="com.easy.kotlin.MovieDetailFragment" /> 电影源数据的获取 我们定义了一个 MovieContent 对象类来存储从...API 获取到的数据,代码如下 package com.easy.kotlin.bean import android.os.StrictMode import com.alibaba.fastjson.JSON...另外,Kotlin 的 Android 视图 DSL Anko 可以我们从繁杂的 XML 视图配置文件中解放出来。...当然,我们使用 Kotlin 集成这些库来进行 Andorid 开发,既能够直接使用我们之前的开发库,又能够从 Java 语言、Android API 的限制中出来。这不得不说是一件好事。
下面我们通过一个具体的接口访问案例,探讨一下如何使用Kotlin代码实现HTTP接口调用。...将经纬度转换为详细地址,就要访问谷歌地图提供的地址查询接口了,该接口的地址形如“http://maps.google.cn/maps/api/geocode/json?...maps.google.cn/maps/api/geocode/json?...= null) { doAsync { //根据经纬度数据从谷歌地图获取详细地址信息 val url = MessageFormat.format...下面我们继续探讨如何使用Kotlin代码读取网络图片。
今天,我们将集成 OpenAI API (ChatGPT)来构建一个简单的类似 ChatGPT 的 android 应用程序,让它返回我们想要的图片,本文是上一篇的姊妹篇。...详细步骤 第 1 步:在 Android Studio 中创建一个新项目 首先在 Android Studio 中创建新项目,选择 Kotlin 编程。...第 2 步:在 build.gradle 文件中添加以下依赖项 下面是 Volley 的依赖项,我们将使用它从 API 获取数据。...我们使用 Picasso 依赖项从 URL 加载图像。...导航到以下URL,只需获取open ai的api key即可。在此屏幕上单击创建新密钥以生成新密钥。 第 6 步:使用 MainActivity.kt 文件。
mpp-dev-11' 如果你还不了解协程和Flow可以先移步至前两篇文章 Kotlin 协程 看这一篇就够了 Kotlin Flow 看这一篇 带你入门~ 项目示例 在官方文档中也给出了我们Paging...通过上图我们也可以清晰的看出来,Paging在仓库层、ViewModel和UI层都有具体的表现,接下来我们通过一个示例来逐步讲解Paging是如何在项目架构中工作的。...API接口准备 API接口我们使用 「鸿洋」大佬 「玩Android」中的查询每日一问接口 :https://wanandroid.com/wenda/list/1/json 这里我们已经写好了RetrofitService...从上图可以知道,load的方法 是我们通过Paging的配置自动触发的,不需要我们每次去调用,那么我们如何来使用DataSource呢?...View层数据请求并将结果显示在View上 到这里,基本工作已经差不多了,当然我们说的差不多了只是快能看到成果了,其中需要讲解的地方还有很多,最后一步我们在view中请求数据,并将结果绑定在adapter
Kotlin 更新 Android Studio 3.3 捆绑了 Kotlin 1.3.11,包含对 Kotlin 协程 (Coroutines) 与合约 (Contracts) 的支持,并且 IDE...据统计结果显示,优化之后,Quick Boot 保存快照的平均用时从 27 秒降至 3 秒 - 速度提升了整整 8 倍。...(对于“如何通过分析过程提升应用性能表现”之后会有推出相关文章,敬请关注简书、公共号获取最新文章) 网络分析器的格式化文本支持 在默认设置下,Android Studio 3.3 中的网络分析器会对网络负载中的常见文本类型进行格式化操作...,包括 HTML, XML 和 JSON。...如果应用使用的API是过时的也不必担心,Android Studio现在为我们提供了更详细的调试信息。
id 'com.android.application' id 'kotlin-android' id 'kotlin-kapt' id 'dagger.hilt.android.plugin...类的生命周期 @Module:告诉Hilt如何提供不同类型的实例 @InstallIn:用来告诉Hilt这个模块会被安装到哪个组件上 @Provides:告诉Hilt如何获取具体实例 @Singleton...return appDatabase.movieDao() } } 五、Pager配置 我们有了网络模块,数据库模块,接下来就要实现配置Pager,PagingSource我们已经实现了从数据库获取...我们就可以从数据库获取PagingSource,传递给后续的Pager @OptIn(ExperimentalPagingApi::class) class MovieRemoteMediator(...接下来就是从网络获取数据了: override suspend fun load( loadType: LoadType, state: PagingState