Sample code for 30+ languages & platforms
Objective-C

OpenAI (ChatGPT) Create Chat Completion

See more OpenAI ChatGPT Examples

Shows how to create a model response for a given chat conversation.

Chilkat Objective-C Downloads

Objective-C
#import <CkoHttp.h>
#import <CkoJsonObject.h>
#import <CkoHttpResponse.h>
#import <CkoStringBuilder.h>
#import <NSString.h>

BOOL success = NO;

//  This example assumes the Chilkat API to have been previously unlocked.
//  See Global Unlock Sample for sample code.

CkoHttp *http = [[CkoHttp alloc] init];

//  Implements the following CURL command:

//  curl https://api.openai.com/v1/chat/completions \
//    -H "Content-Type: application/json" \
//    -H "Authorization: Bearer $OPENAI_API_KEY" \
//    -d '{
//      "model": "gpt-3.5-turbo",
//      "messages": [{"role": "user", "content": "Hello!"}]
//    }'

//  Use the following online tool to generate HTTP code from a CURL command
//  Convert a cURL Command to HTTP Source Code

//  Use this online tool to generate code from sample JSON:
//  Generate Code to Create JSON

//  The following JSON is sent in the request body.

//  {
//    "model": "gpt-3.5-turbo",
//    "messages": [
//      {
//        "role": "user",
//        "content": "Hello!"
//      }
//    ]
//  }

CkoJsonObject *json = [[CkoJsonObject alloc] init];
[json UpdateString: @"model" value: @"gpt-3.5-turbo"];
[json UpdateString: @"messages[0].role" value: @"user"];
[json UpdateString: @"messages[0].content" value: @"Hello!"];

//  Adds the "Authorization: Bearer $OPENAI_API_KEY" header.
//  This is NOT a real key.  Change the "sk-vi...." to your own key.
http.AuthToken = @"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";
[http SetRequestHeader: @"Content-Type" value: @"application/json"];

CkoHttpResponse *resp = [[CkoHttpResponse alloc] init];
success = [http HttpJson: @"POST" url: @"https://api.openai.com/v1/chat/completions" json: json contentType: @"application/json" response: resp];
if (success == NO) {
    NSLog(@"%@",http.LastErrorText);
    return;
}

CkoStringBuilder *sbResponseBody = [[CkoStringBuilder alloc] init];
[resp GetBodySb: sbResponseBody];

CkoJsonObject *jResp = [[CkoJsonObject alloc] init];
[jResp LoadSb: sbResponseBody];
jResp.EmitCompact = NO;

NSLog(@"%@",@"Response Body:");
NSLog(@"%@",[jResp Emit]);

int respStatusCode = [resp.StatusCode intValue];
NSLog(@"%@%d",@"Response Status Code = ",respStatusCode);
if (respStatusCode >= 400) {
    NSLog(@"%@",@"Response Header:");
    NSLog(@"%@",resp.Header);
    NSLog(@"%@",@"Failed.");
    return;
}

//  Sample JSON response:
//  (Sample code for parsing the JSON response is shown below)

//  {
//    "id": "chatcmpl-123",
//    "object": "chat.completion",
//    "created": 1677652288,
//    "choices": [
//      {
//        "index": 0,
//        "message": {
//          "role": "assistant",
//          "content": "\n\nHello there, how may I assist you today?"
//        },
//        "finish_reason": "stop"
//      }
//    ],
//    "usage": {
//      "prompt_tokens": 9,
//      "completion_tokens": 12,
//      "total_tokens": 21
//    }
//  }

//  Sample code for parsing the JSON response...
//  Use the following online tool to generate parsing code from sample JSON:
//  Generate Parsing Code from JSON

int index;
NSString *Role = 0;
NSString *Content = 0;
NSString *finish_reason = 0;

NSString *id = [jResp StringOf: @"id"];
NSString *v_object = [jResp StringOf: @"object"];
int created = [[jResp IntOf: @"created"] intValue];
int Prompt_tokens = [[jResp IntOf: @"usage.prompt_tokens"] intValue];
int Completion_tokens = [[jResp IntOf: @"usage.completion_tokens"] intValue];
int Total_tokens = [[jResp IntOf: @"usage.total_tokens"] intValue];
int i = 0;
int count_i = [[jResp SizeOfArray: @"choices"] intValue];
while (i < count_i) {
    jResp.I = [NSNumber numberWithInt: i];
    index = [[jResp IntOf: @"choices[i].index"] intValue];
    Role = [jResp StringOf: @"choices[i].message.role"];
    Content = [jResp StringOf: @"choices[i].message.content"];
    finish_reason = [jResp StringOf: @"choices[i].finish_reason"];
    i = i + 1;
}