Skip to content

luc119.c

Problem Statement

Write a program to analyse a given sentence to detect the mood of the sentence using OpenAI Chat Completion API.

Metadata

Property Detail
Author Amit Dutta amitdutta4255@gmail.com
Date 08 Feb 2026
License MIT License (See the LICENSE file for details)

Actions

Raw View on GitHub

💡 You can print or save this file by opening Raw and using your browser.

Source Code

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <curl/curl.h>

/* Pre-requisites:
   1. Install libcurl.
   2. Get OpenAI API Key.
*/

#define API_KEY "YOUR_OPENAI_API_KEY_HERE"

int main(void) {
    CURL *curl;
    CURLcode res;

    const char *url = "https://api.openai.com/v1/chat/completions";

    /* We construct the JSON payload manually.
       System prompt instructs the model to detect mood.
       User prompt is the sentence to analyze.
    */
    const char *data = "{"
                       "\"model\": \"gpt-3.5-turbo\","
                       "\"messages\": ["
                       "  {\"role\": \"system\", \"content\": \"You are a helpful assistant. Analyze the mood of the user input sentence. Return only the mood keywords (e.g., admiration, appreciation, anger, joy).\"},"
                       "  {\"role\": \"user\", \"content\": \"I am so impressed by your performance\"}"
                       "]"
                       "}";

    struct curl_slist *headers = NULL;
    char auth_header[100];
    sprintf(auth_header, "Authorization: Bearer %s", API_KEY);

    curl = curl_easy_init();
    if(curl) {
        headers = curl_slist_append(headers, "Content-Type: application/json");
        headers = curl_slist_append(headers, auth_header);

        curl_easy_setopt(curl, CURLOPT_URL, url);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        printf("Analyzing sentence: 'I am so impressed by your performance'\n");
        printf("Waiting for OpenAI response...\n\n");

        // The response will be printed to standard output
        res = curl_easy_perform(curl);

        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));

        printf("\n\n(Parse the JSON above to extract the 'content' field)\n");

        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
    }
    return 0;
}