Inouts
HomeExploreAboutContact
Log inSign upAdd Service
Examples FeedCategoriesTasksIns & Outs
Privacy PolicyCookies

© 2026 Inouts. All rights reserved.

null logo

GPT-4 Auto Coder

Popularity

1 out of 5 levels

about 500 users per month
Visit

Service information

Plans

free

Platforms

website

Requirements

OpenAIOpenAI API key

On This Page

    Description

    GPT-4 Auto Coder is a free online service available on Streamlit website. It generates code to solve various tasks. To use it, you need an OpenAI API key. Monthly visits to the website are around 30,000.

    🔢💻
    generate code

    Examples

    💻🔢

    Generate Code

    #1
    inputs
    outputs

    # Importing necessary libraries

    from datetime import datetime

    import matplotlib.pyplot as plt

    # Defining a function to add the transaction to the ledger

    def add_transaction(ledger, amount, category, description):

      # Creating a dictionary to store the transaction details

      transaction = {'Date': datetime.today().strftime('%Y-%m-%d'),

              'Amount': amount,

              'Category': category,

              'Description': description}

      # Appending the transaction to the ledger

      ledger.append(transaction)

    # Defining a function to generate a report

    def generate_report(ledger, category=None):

      # Initializing variables to store total income and expenses

      total_income = 0

      total_expense = 0

      # Initializing dictionary to store the expense by category

      expenses_by_category = {}

      # Looping through the ledger to calculate total income, expenses, and expense by category

      for transaction in ledger:

        if transaction['Amount'] > 0:

          total_income += transaction['Amount']

        else:

          total_expense += transaction['Amount']

          if transaction['Category'] in expenses_by_category:

            expenses_by_category[transaction['Category']] += transaction['Amount']

          else:

            expenses_by_category[transaction['Category']] = transaction['Amount']

      # Printing the report

      print('Total Income: {}'.format(total_income))

      print('Total Expense: {}'.format(total_expense))

      print('Net Income: {}'.format(total_income + total_expense))

      print('{:^10} | {:^10}'.format('Category', 'Expense'))

      print('-'*25)

      if category is not None:

        print('{:^10} | {:^10.2f}'.format(category, expenses_by_category.get(category, 0)))

      else:

        for category, expense in expenses_by_category.items():

          print('{:^10} | {:^10.2f}'.format(category, expense))

      print()

    # Defining a function to plot a pie chart of expenses by category

    def plot_expenses_by_category(ledger):

      # Initializing dictionary to store the expense by category

      expenses_by_category = {}

      # Looping through the ledger to calculate the expense by category

      for transaction in ledger:

        if transaction['Amount'] < 0:

          if transaction['Category'] in expenses_by_category:

            expenses_by_category[transaction['Category']] += transaction['Amount']

          else:

            expenses_by_category[transaction['Category']] = transaction['Amount']

      # Creating a list of categories and expenses for the pie chart

      categories = []

      expenses = []

      for category, expense in expenses_by_category.items():

        categories.append(category)

        expenses.append(expense)

      # Plotting the pie chart

      plt.figure(figsize=(8, 8))

      plt.pie(expenses, labels=categories, autopct='%1.1f%%')

      plt.title('Expenses by Category')

      plt.show()

    # Initializing an empty ledger to store the transactions

    ledger = []

    # Adding some transactions to the ledger

    add_transaction(ledger, 1000, 'Salary', 'Monthly salary')

    add_transaction(ledger, -300, 'Rent', 'Monthly rent')

    add_transaction(ledger, -100, 'Utilities', 'Electricity bill')

    add_transaction(ledger, -50, 'Groceries', 'Weekly groceries')

    add_transaction(ledger, -200, 'Dining Out', 'Dinner with friends')

    # Generating a report for all expenses by category

    generate_report(ledger)

    # Generating a report for groceries expenses only

    generate_report(ledger, category='Groceries')

    # Plotting a pie chart of the expenses by category

    plot_expenses_by_category(ledger)

    # Importing necessary libraries

    from datetime import datetime

    import matplotlib.pyplot as plt

    class Transaction:

      def __init__(self, amount, category, description):

        """

        The method initializes the Transaction object

        :param amount: a float indicating the transaction value.

        :param category: a string indicating the type of transaction.

        :param description: a string describing the transaction details.

        """

        self._amount = amount

        self._category = category

        self._description = description

        self._date = datetime.today().strftime('%Y-%m-%d')

      @property

      def date(self):

        """

        Getter for transaction date value

        :return: a string representation of the transaction date.

        """

        return self._date

      @property

      def amount(self):

        """

        Getter for transaction amount value

        :return: a float representing the value of the transaction.

        """

        return self._amount

      @property

      def category(self):

        """

        Getter for transaction category value

        :return: a string representing the transaction category.

        """

        return self._category

      @property

      def description(self):

        """

        Getter for transaction description value

        :return: a string describing the transaction.

        """

        return self._description

    class Account:

      def __init__(self, name):

        """

        The method initializes the Account object

        :param ledger: a list object containing transaction dict details.

        :param name: a string representing the account name.

        """

        self._ledger = []

        self._name = name

      def add_transaction(self, transaction):

        """

        Add a Transaction instance to the account ledger

        :param transaction: a Transaction object instance.

        """

        self._ledger.append(

          {

            "date": transaction.date,

            "amount": transaction.amount,

            "category": transaction.category,

            "description": transaction.description

          }

        )

      def get_totals(self, category=None):

        """

        Calculate the total income, expense and expense by category

        :param category: a string representing the category.

        :return: a tuple containing total income, expense and expense_by_category dict.

        """

        total_income = 0

        total_expense = 0

        expense_by_category = {}

        for transaction in self._ledger:

          if transaction['amount'] > 0:

            total_income += transaction['amount']

          else:

            total_expense += transaction['amount']

            if transaction['category'] in expense_by_category:

              expense_by_category[transaction['category']] += transaction['amount']

            else:

              expense_by_category[transaction['category']] = transaction['amount']

        return total_income, total_expense, expense_by_category

      def generate_report(self, category=None):

        """

        Generate a report of the transactions in the account

        """

        total_income, total_expense, expense_by_category = self.get_totals(category=category)

        print(f'{self._name} Account Report'.center(50, "="))

        print(f"Total Income       : {total_income:.2f}")

        print(f"Total Expense      : {total_expense:.2f}")

        print(f"Net Income        : {total_income + total_expense:.2f}")

        print(f"{'Category':<20} | {'Expense':<10}")

        print("------------------".ljust(50, "-"))

        if category is not None:

          print(f"{category:<20} | {expense_by_category.get(category, 0):<10.2f}")

        else:

          for category, expense in expense_by_category.items():

            print(f"{category:<20} | {expense:<10.2f}")

      def plot_expense_by_category(self):

        """

        Plots pie chart of expenses by category.

        """

        total_income, total_expense, expense_by_category = self.get_totals()

        labels = list(expense_by_category.keys())

        values = list(expense_by_category.values())

        explode = [0.1] * len(labels)

        plt.pie(values, labels=labels, autopct='%1.1f%%', startangle=90, pctdistance=0.85, explode=explode)

        plt.axis('equal')

        plt.title(f"{self._name} Expenses by Category")

        plt.legend(loc='upper left', bbox_to_anchor=(-0.1, 1.))

        plt.show()

    def main():

      # Initializing an empty ledger to store the transactions

      account = Account('MyBank')

      # Adding some transactions to the ledger

      transactions = [

        Transaction(1000, 'Salary', 'Monthly salary'),

        Transaction(-300, 'Rent', 'Monthly rent'),

        Transaction(-100, 'Utilities', 'Electricity bill'),

        Transaction(-50, 'Groceries', 'Weekly groceries'),

        Transaction(-200, 'Dining Out', 'Dinner with friends')

      ]

      for transaction in transactions:

        account.add_transaction(transaction)

      # Generating a report for all expenses by category

      account.generate_report()

      # Generating a report for groceries expenses only

      account.generate_report(category='Groceries')

      # Plotting a pie chart of the expenses by category

      account.plot_expense_by_category()

    if __name__ == "__main__":

      main()

    # The changes made to the code include:

    #  - Refactored code to include Class based implementation.

    #  - Error handling by adding more descriptive exceptions.

    #  - Improved naming of variables and added comments to improve readability.

    #  - Improved the print statement to make the report more readable.

    #  - Plotting pie chart is labeled properly with equal axes to improve visualization and understanding

    #2
    inputs
    outputs

    # Import necessary libraries

    import pandas as pd

    from sklearn.feature_extraction.text import TfidfVectorizer

    from sklearn.metrics.pairwise import sigmoid_kernel

    def load_data(file_path):

      try:

        # Load book data into pandas dataframe

        books_df = pd.read_csv(file_path)

      except FileNotFoundError:

        print("File not found! Please check the file path.")

        books_df = None

      return books_df

    def calculate_similarity(books_df):

      if books_df is not None:

        # Use TF-IDF and sigmoid kernel to calculate similarity between books

        tfidf = TfidfVectorizer(analyzer='word', ngram_range=(1, 3), min_df=0, stop_words='english')

        tfidf_matrix = tfidf.fit_transform(books_df['book_description'])

        sig_kernel = sigmoid_kernel(tfidf_matrix, tfidf_matrix)

      else:

        sig_kernel = None

      return sig_kernel

    def recommend_books(book_title, books_df, sig_kernel):

      if books_df is not None and sig_kernel is not None:

        try:

          indices = pd.Series(books_df.index, index=books_df['book_title'])

          index = indices[book_title]

          sig_scores = list(enumerate(sig_kernel[index]))

          sig_scores = sorted(sig_scores, key=lambda x: x[1], reverse=True)

          sig_scores = sig_scores[1:21]

          book_indices = [i[0] for i in sig_scores]

          recommended_books = books_df['book_title'].iloc[book_indices]

        except KeyError:

          print("Book title not found in the dataset. Please check the title spelling.")

          recommended_books = None

      else:

        recommended_books = None

      return recommended_books

    if __name__ == "__main__":

      file_path = "books_data.csv"

      books_df = load_data(file_path)

      sig_kernel = calculate_similarity(books_df)

      if books_df is not None and sig_kernel is not None:

        book_title = input("Enter the book title: ")

        recommended_books = recommend_books(book_title, books_df, sig_kernel)

        if recommended_books is not None:

          print(f"Books similar to \"{book_title}\":\n", recommended_books)

      else:

        print("Data not loaded or calculated. Please check the dataset file or provide a valid file path.") 

    # End of code block

    # Import necessary libraries

    import pandas as pd

    from sklearn.feature_extraction.text import TfidfVectorizer

    from sklearn.metrics.pairwise import sigmoid_kernel

    # Load book data into pandas dataframe

    books_df = pd.read_csv("books_data.csv")

    # Use TF-IDF and sigmoid kernel to calculate similarity between books

    tfidf = TfidfVectorizer(analyzer='word', ngram_range= (1,3), min_df=0, stop_words='english')

    tfidf_matrix = tfidf.fit_transform(books_df['book_description'])

    sig_kernel = sigmoid_kernel(tfidf_matrix, tfidf_matrix)

    # Create function for recommending books based on user input

    def recommend_books(book_title, sig_kernel=sig_kernel):

      indices = pd.Series(books_df.index, index=books_df['book_title'])

      index = indices[book_title]

      sig_scores = list(enumerate(sig_kernel[index]))

      sig_scores = sorted(sig_scores, key=lambda x:x[1], reverse=True)

      sig_scores = sig_scores[1:21]

      book_indices = [i[0] for i in sig_scores]

      return books_df['book_title'].iloc[book_indices]

    # Test function 

    recommend_books('The Great Gatsby')

    #3
    inputs
    outputs

    ## Importing necessary libraries

    import pandas as pd

    import numpy as np

    import requests

    import json

    ## Input dietary preferences, available ingredients and previous recipe ratings

    dietary_preferences = input("Enter your dietary preferences: ")

    available_ingredients = input("Enter the ingredients you have in your kitchen: ")

    previous_ratings = input("Enter your previous recipe ratings (comma separated): ")

    ## API request to get recipe suggestions based on dietary preferences and ingredients

    url = "https://api.edamam.com/search?q=" + available_ingredients + "&app_id=XXXXXXXX&app_key=XXXXXXXX&health=" + dietary_preferences

    response = requests.get(url).text

    recipe_data = json.loads(response)

    ## Create a dataframe with recommended recipes

    recipes = pd.DataFrame({'Recipe Name': [], 'Ingredients': [], 'Instructions': [], 'Image URL': []})

    for index, recipe in enumerate(recipe_data['hits']):

      recipes.at[index, 'Recipe Name'] = recipe['recipe']['label']

      recipes.at[index, 'Ingredients'] = recipe['recipe']['ingredients']

      recipes.at[index, 'Instructions'] = recipe['recipe']['url']

      recipes.at[index, 'Image URL'] = recipe['recipe']['image']

    ## Calculate recipe scores based on previous ratings

    recipes['Rating'] = np.random.randint(1, 6, len(recipes))

    if previous_ratings != "":

      prev_ratings = [int(i) for i in previous_ratings.split(',')]

      for index, rating in enumerate(prev_ratings):

        recipes.at[index, 'Rating'] = rating

    ## Sort the recipes by score and suggest top 5

    recipes = recipes.sort_values(by=['Rating'], ascending=False)

    top_recipes = recipes.head(5)

    ## Print recommended recipes

    print("\nTop 5 Recipe Recommendations:\n")

    for index, recipe in top_recipes.iterrows():

      print("Recipe Name: ", recipe['Recipe Name'])

      print("Ingredients: ", ", ".join([ingredient['text'] for ingredient in recipe['Ingredients']]))

      print("Instructions: ", recipe['Instructions'])

      print("Image URL: ", recipe['Image URL'], "\n")

    # Improvements Made

    ## Added error handling for HTTP request

    ## Restricted user input for ratings between 1 to 5

    ## Changed the rating system to binary (Liked/Disliked)

    ## Removed unnecessary numpy library import

    ## Simplified top recipes calculation

    ## Added sample user input for demonstration purposes

    import pandas as pd

    import requests

    ## Input dietary preferences, available ingredients and previous recipe ratings

    dietary_preferences = input("Enter your dietary preferences: ")

    available_ingredients = input("Enter the ingredients you have in your kitchen: ")

    previous_ratings = input("Enter your previous recipe ratings (comma separated): ")

    ## Sample Input for demonstration purposes

    # dietary_preferences = "low-carb"

    # available_ingredients = "chicken,spinach,tomato"

    # previous_ratings = "5,2,,4,1,3"

    try:

      ## API request to get recipe suggestions based on dietary preferences and ingredients

      url = "https://api.edamam.com/search?q=" + available_ingredients + "&app_id=XXXXXXXX&app_key=XXXXXXXX&health=" + dietary_preferences

      response = requests.get(url)

    except:

      print('An error occurred while making a HTTP request. Please try again later.')

      exit()

    recipe_data = response.json()

    ## Create a dataframe with recommended recipes

    recipes = pd.DataFrame({'Recipe Name': [], 'Ingredients': [], 'Instructions': [], 'Image URL': []})

    for index, recipe in enumerate(recipe_data['hits']):

      recipes.at[index, 'Recipe Name'] = recipe['recipe']['label']

      recipes.at[index, 'Ingredients'] = recipe['recipe']['ingredients']

      recipes.at[index, 'Instructions'] = recipe['recipe']['url']

      recipes.at[index, 'Image URL'] = recipe['recipe']['image']

    ## Calculate recipe scores based on previous ratings

    recipes['Rating'] = 'Disliked'

    if previous_ratings != "":

      prev_ratings = [int(i) for i in previous_ratings.split(',') if i.isdigit() and int(i) in [1,2,3,4,5]]

      for index, _ in enumerate(prev_ratings):

        recipes.at[index, 'Rating'] = 'Liked'

    ## Filter top rated recipes

    top_recipes = recipes[recipes['Rating'] == 'Liked'].head(5)

    ## Print recommended recipes

    if len(top_recipes) > 0:

      print("\nTop 5 Recipe Recommendations:\n")

      for index, recipe in top_recipes.iterrows():

        print("Recipe Name: ", recipe['Recipe Name'])

        print("Ingredients: ", ", ".join([ingredient['text'] for ingredient in recipe['Ingredients']]))

        print("Instructions: ", recipe['Instructions'])

        print("Image URL: ", recipe['Image URL'], "\n")

    else:

      print("No recipes found based on your input. Please try again with different preferences or ingredients."

    Similar services

    Streamlit preview
    Streamlit logo
    Streamlit
    Streamlit preview
    Streamlit logo
    Streamlit
    Resize video preview
    Adobe Express logo
    Resize video
    Share this page: