我想执行POST URLRequest,但首先我需要创建请求正文。 身体应该是这样的:
{
"model": "gpt-4-vision-preview",
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": <mutableStringValue>
},
{
"type": "image_url",
"image_url": {
"url": <mutableStringValue>
}
}
]
}
],
"max_tokens": 300
}
我无法将其硬核为
.json
文件,因为参数 "text"
(在第一个 "type"
下)和 "image_url"
(在第二个 "type"
下)作为函数参数给出。
我不知道如何处理两个"type"
键。
到目前为止,我想出了这样的事情:
struct ImageInputRequestBody: Codable {
let model: String = "gpt-4-vision-preview"
let messages: [Message]
let maxTokens: Int = 300
enum CodingKeys: String, CodingKey {
case model, messages
case maxTokens = "max_tokens"
}
struct Message: Codable {
let role: String
let content: [Content]
}
struct Content: Codable {
let type: String
let text: String?
}
}
但这里我缺少第二个
"type"
和"image_url"
内容
你可以尝试这样简单的事情:
struct Content: Codable {
let type: String
let text: String?
let image_url: ImgUrl?
}
struct ImgUrl: Codable {
let url: String
}
当 json 数据中存在
text
时,image_url
将
是 nil
,反之亦然。在你的代码中你总是需要检查
无论如何都不为零。