Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Save more on your purchases! discount-offer-chevron-icon
Savings automatically calculated. No voucher code required.
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Events
Videos
Audiobooks
Packt Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds

How-To Tutorials - ChatGPT

108 Articles
article-image-openai-and-chatgpt-for-enterprises
Valentina Alto
14 Sep 2023
9 min read
Save for later

OpenAI and ChatGPT for Enterprises

Valentina Alto
14 Sep 2023
9 min read
Dive deeper into the world of AI innovation and stay ahead of the AI curve! Subscribe to our AI_Distilled newsletter for the latest insights. Don't miss out – sign up today!This article is an excerpt from the book, Modern Generative AI with ChatGPT and OpenAI Models, by Valentina Alto. Harness the power of AI with innovative, real-world applications, and unprecedented productivity boosts, powered by the latest advancements in AI technology like ChatGPT and OpenAIIntroductionIn this article, we’ll focus on the enterprise-level applications of OpenAI models and introduce the partnership between OpenAI and Microsoft and Azure OpenAI (AOAI) Service. We will go through the milestones and developments of Microsoft in the field of artificial intelligence (AI), highlighting the journey that brought the Azure cloud into the game of OpenAI, and why this is a game-changer for large organizations. Finally, we will consider the topic of responsible AI and how to make sure your AI system complies with ethical standards.In this article, we will discuss the following topics:The history of the partnership between Microsoft and OpenAI and the introduction of AOAI ServiceThe role of the public cloud in the context of OpenAI models Responsible AITechnical requirementsThe following are the technical requirements for this article: An Azure subscription, which you can create for free here: https://azure.microsoft. com/free/cognitive-services.Access granted to Azure OpenAI in the desired Azure subscription. At the time of writing, access to this service is granted only by application. You can apply for access to Azure OpenAI by completing the form at https://aka.ms/oai/accessAzure OpenAI ServiceAOAI Service is a product of Microsoft that provides REST API access to OpenAI’s powerful language models such as GPT-3.5, Codex, and DALL-E. You can use these models for the very same tasks as OpenAI models, such as content generation, summarization, semantic search, natural language, and code translation.In the context of the Microsoft Azure AI portfolio, AOAI Service is collocated among the following Cognitive Services offerings:Figure - AOAI Service General Availability (GA)As with any other Cognitive Services offering, AOAI offers models that have already been trained and are ready to be consumed.To create your AOAI resource, follow these instructions:1.      Navigate to the Azure portal at https://ms.portal.azure.com.2.      Click on Create a resource.3.      Type azure openai and click on Create.4.      Fill in the required information and click on Review + create.This is shown in the following screenshot:Figure  – Steps to create an AOAI resourceThis process might take a few minutes. Once it is ready, you can directly jump to its user-friendly interface, AOAI Playground, to test your models before deploying them:Figure  – AOAI UI and PlaygroundNote that AOAI Playground looks almost identical to the OpenAI Playground version we saw in Chapter 2. The difference here is that, to use AOAI models, you have to initiate a deployment, which is a serverless compute instance you can attach to a model. You can do so either in Playground or on the resource backend page in the Azure portal:Figure – Creating a new AOAI deployment via Playground (A) or in the Azure portal (B)For example, I created a deployment called text-davinci-003 with an associated textdavinci-003 model:Figure 9.7 – An active deployment of AOAIIn OpenAI Playground, we can test those models either directly via the user interface or by embedding their APIs into our applications. In the next section, we are going to explore how to interact with Playground and try different models’ configurations. In Chapter 10, we will learn how to integrate AOAI’s Models API into enterprise applications.Exploring PlaygroundAOAI Playground is the easiest way to get familiar with the underlying models and start planning which model’s version is the most suitable for your projects. The user interface presents different tabs and workspaces, as shown in the following screenshot:Figure - Overview of AOAI PlaygroundLet’s explore each of them:Playground | Chat: The Chat workspace is designed to be only used with conversational models such as GPT-3.5-turbo (the model behind ChatGPT):Figure – AOAI Chat workspaceIt offers a similar experience to ChatGPT itself, with the possibility to configure your model with additional parameters (as we saw in Chapter 2 with OpenAI Playground). Furthermore, there is an additional feature that makes the Chat workspace very interesting, known as System message:         Figure – Example of System messageSystem message is the set of instructions we give the model to tell it how to behave and interact with us. As for the prompt, System message represents a key component of a model’s configuration since it massively affects model performance.For example, let’s instruct our model to behave as a JSON formatter assistant:Figure – Example of a model acting as a JSON formatter assistantAs you can see from the previous screenshot, the model was able to suggest a JSON file through some simple data, such as name and age, without the need to specify any labels.Playground | Completions: Different from the previous workspace, the Completions workspace offers a sort of white paper where you can interact with your models. While GPT-3.5-turbo is designed for conversational tasks (which means it can be consumed via a chatbot-like interface), the GPT-3 series contains more general-purpose models and can be used for a wide range of language tasks, such as content generation, summarization, and so on.For example, we could ask our model to generate a quiz by giving it a description of the topic and a one-shot example, as shown here:Figure – Example of a GPT model generating a quizFinally, as per the Chat workspace, with Completions, you can configure parameters such as the maximum number of tokens or the temperature (refer to Chapter 2 for a comprehensive list of those parameters and their meanings).Management | Deployments: Within the Deployments tab, you can create and manage new deployments to be associated with AOAI models. They are depicted here:Figure – List of AOAI deploymentsEach deployment can host only one model. You can edit or delete your deployments at any time. As we mentioned previously, a model deployment is the enabler step for using either the Completions or Chat workspace within AOAI Service.Management | Models: Within this tab, you can quickly assess the models that are available within AOAI Service and, among them, those that can be deployed (that is, a model that hasn’t been deployed yet). For example, let’s consider the following screenshot:Figure – List of AOAI modelsHere, we have text-similarity-curie-001. It doesn’t have an associated deployment, so it can be deployed (as the Deployable column shows). On the other hand, text-similarityada-002 already has a deployment, so it is not available anymore. Within this tab, you can also create a custom model by following a procedure called fine-tuning.We explored this in Chapter 2:Figure – Example of model fine-tuningStarting from this guided widget, you can upload your training and validation data to produce a customized model, starting from a base model (namely, text-davinci-002), which will be hosted on a dedicated deployment.NoteIn Chapter 2, we saw that the training dataset should align with a specific format of the following type (called JSONL):{"prompt": "<prompt text>", "completion": "<ideal generated text>"}{"prompt": "<prompt text>", "completion": "<ideal generated text>"}{"prompt": "<prompt text>", "completion": "<ideal generated text>"}...To facilitate this formatting, OpenAI has developed a tool that can format your data into this specific format ready for fine-tuning. It can also provide suggestions on how to modify data so that the tool can be used for fine-tuning. Plus, it accepts various data formats as inputs, including CSV, TXT, and JSON.To use this tool, you can initialize the OpenAI command-line interface (CLI) by running the following command: pip install --upgrade openaiOnce initialized, you can run the tool, as follows:openai tools fine_tunes.prepare_data -f <LOCAL_FILE>Management | File Management: Finally, within the File Management tab, you can govern and upload your training and test data directly from the user interface, as shown here:Figure – Example of uploading a file within AOAI ServiceYou can decide to upload files by selecting Local file or Azure blob or other shared web locations. Once you’ve uploaded your files, you will be able to select them while creating customized models, via the Models tab.Finally, as mentioned in the previous section, each model comes with a REST API that can be consumed in your applications.ConclusionIn this article, we saw how the partnership between OpenAI and Microsoft has brought about a powerful and innovative AI solution for enterprise-level organizations: AOAI. This service combines OpenAI’s cutting-edge technology with Microsoft’s extensive cloud infrastructure to provide businesses with a scalable and customizable platform for building and deploying advanced AI applications.We also dwelled on Microsoft’s strong focus on responsible AI practices and ethics, and how AOAI Service reflects this commitment to responsible AI, with features such as a content filter built into the platform.As AI continues to transform industries and shape our future, the collaboration between OpenAI and Microsoft marks an important milestone in the development of enterprise-level AI solutions. AOAI empowers businesses to harness the power of AI to drive growth and innovation while ensuring ethical and responsible practices.Author BioValentina Alto graduated in 2021 in data science. Since 2020, she has been working at Microsoft as an Azure solution specialist, and since 2022, she has been focusing on data and AI workloads within the manufacturing and pharmaceutical industry. She has been working closely with system integrators on customer projects to deploy cloud architecture with a focus on modern data platforms, data mesh frameworks, IoT and real-time analytics, Azure Machine Learning, Azure Cognitive Services (including Azure OpenAI Service), and Power BI for dashboarding. Since commencing her academic journey, she has been writing tech articles on statistics, machine learning, deep learning, and AI in various publications and has authored a book on the fundamentals of machine learning with Python.
Read more
  • 0
  • 0
  • 15861

article-image-chatgpt-for-interview-preparation
Jakov Semenski
14 Sep 2023
6 min read
Save for later

ChatGPT for Interview Preparation

Jakov Semenski
14 Sep 2023
6 min read
IntroductionDespite reading numerous forums and blogs, you feel unprepared for the technical questions that interviewers might throw at you. Isn't there a more efficient way?The countdown during a timed coding test.The watching eyes of an interviewer - make you blank out.Leading to regrets about not practicing in a more realistic setting.What if there was a tool available 24/7, that can not only answer your questions but also engage with you, much like an interviewer would?Enter ChatGPT, your personalized interview coach.Using ChatGPT for interview preparation is like having a personal trainer at the gym.While you can definitely exercise on your own, the trainer (or in this case, ChatGPT) guides you:It corrects your mistakes,Provides targeted exercises (solutions)Improve your weak areas.Let’s put ChatGPT to the test with a hands-on exercise:Setting up a mock interview for Senior Java RoleDoint theoretical and coding questionsGetting feedback for our answersBonus: We will also check if it can make my learning entertaining.Here are Little-Known Ways to Ace Your Dev Interview with ChatGPTStep 1: Set your levelChatGPT doesn't know your level, so we need to set proper expectationsStep 2: Setup rehears mock interviewNow, we need to let ChatGPT know that we are not interested in answers, but rather feedback.Here is the full prompt:I want to rehear for the senior java interview Currently, I am junior and have experience only with basics and helloworld examples don't show me the answer yet once I answer, check if I was correctHere is the result:ChatGPTOf course! Let's simulate a senior Java interview scenario. I'll provide questions that are often asked for a senior Java position. Try to answer them to the best of your ability, and then I'll provide feedback.Question 1: Explain the difference between ArrayList and LinkedList in Java.Go ahead and provide your answer when you're ready.UserI think arraylist uses dynamic array while linkedlists stores data in different objects and acts as a queueChatGPTYou've touched on the basics, but let's dive a bit deeper.ArrayList:Internal Structure: As you correctly mentioned, ArrayList uses a dynamic array to store its elements. This means its capacity grows automatically when we add more elements than its initial capacity.Access Time: Because of this structure, accessing an element by its index is fast, i.e., O(1).Insertion/Deletion Time: However, inserting or deleting an element from anywhere except the end of the list takes O(n) time on average, as it may require shifting elements.Memory Overhead: It's relatively low, as you're mostly dealing with the raw array and a few integer counters.LinkedList:Internal Structure: LinkedList uses a doubly-linked list. Each element (node) has a data part and two pointers, one pointing to the next element and the other to the previous element.Access Time: Getting to an element by index isn't as fast, since it requires walking through the list. It's O(n) in the worst case.Insertion/Deletion Time: However, once you have a reference to a node (say via an iterator), adding or removing is O(1), provided you don’t need to search for the node.Memory Overhead: Higher than ArrayList because of the two pointers with each data item.Now, one more nuanced point: ArrayList performs better in scenarios where you are frequently accessing elements via their indices and have fewer insertions/deletions. LinkedList is better suited for operations that involve frequent insertions or deletions from the beginning or middle of the list.You had a good start! Keep refining your understanding, and you'll be on your way to senior-level knowledge. Would you like to proceed with the next question?Step 3: Now, the coding testWe can now instruct ChatGPT to give us coding questiongive me one more question, this time coding questionChatGPTOf course! Here's a simpler coding problem:Question: Implement a method that takes an array of integers and returns the sum of all even numbers in the array.Method Signature:public int sumOfEvens(int[] numbers) { // your code here }Please go ahead and implement this, and I'll review your solution afterward!Userint sum = 0; for (int number : numbers) { if (number % 2 == 0) { sum += number; } } return sum;ChatGPTThat's correct! Your solution is concise and to the point.Here's the complete function for clarity: ….Step 4: Make it funTo spice up the interview a bit, let’s make chatGPT talk in a funny way so we can get some laughs along the wayPrompt:write every sentence in a speaking style of a fast-talking wise guy from 1940's gangster moviesChatGPTAlright, alright! I'll take it down a notch for you. No need to get all flustered.Question 3: Look here, champ, you ever heard of this thing called "Encapsulation"? It's one of those big fancy terms they throw around. Can you give me the lowdown on what it means in Java? Just the basics, ya know?Alright, give it your best shot! And remember, keep your chin up, kid!UserIt's basically means binding variables and methods together into a single unit and preventing them from being accessed by other classesChatGPTHey, not too shabby, kid! You've got the right idea. Encapsulation, in Java and many other object-oriented languages, is about keeping the internal states or data of an object private and only allowing modification through public methods. It's a way to protect the integrity of the data and control how it's accessed or modified. It's like having a vault, see? You don’t just let anyone waltz in and take whatever they want. You got guards, and specific ways to access what's inside.Good job, kiddo! Anything else you wanna test your chops on, or are we square?You can find the full chat on this link:https://chat.openai.com/share/b9f8af45-1187-4fa9-a884-4565f37d2884LimitationsKeep in mind that ChatGPT is not always correct, even though it can sound convincing.If you are unsure, always double-check your solution with a compiler for coding answers.ConclusionChatGPT is your ticket to mastering technical interviews.Using ChatGPT ensures you get direct, concise, and often up-to-date explanations on specific problems, making your interview preparation more efficient.Engage, learn, and get instant feedback to always stay a step ahead.As the next step, try it yourself and practice.Remember:Inform ChatGPT about your current skill level.If you are not happy with the questions or topic, give ChatGPT more context.Lastly, make it more fun.Author BioJakov Semenski is an IT Architect working at IBMiX with almost 20 years of experience.He is also a ChatGPT Speaker at the WeAreDevelopers conference and shares valuable tech stories on LinkedIn.
Read more
  • 0
  • 0
  • 13412

article-image-automated-diagram-creation-with-chatgpt
Jakov Semenski
11 Sep 2023
8 min read
Save for later

Automated Diagram Creation with ChatGPT

Jakov Semenski
11 Sep 2023
8 min read
IntroductionImagine constructing a house without a blueprint.Sounds chaotic, right?Similarly, diving into software coding without a UML or sequence diagram is like building that house blindly.Just as architects rely on blueprints, developers can rely on diagrams to build a clear project architecture that guides during the coding phase.It paints a clear roadmap of what needs to be developed.It ensures everyone is on the same page.It saves time during the execution phase.Unfortunately, this phase is often overlooked.It takes time, and you quickly get overwhelmed with so many tools and ways to sketch out diagrams.Now, imagine you can quickly draft diagrams, even during team meetings, so you can visualize complex workflows on the fly.This is what we will cover today.I will share a step-by-step guide on the Little-Known secret of automating diagram creation with ChatGPT (and it can be done all with a free version)Here's how step-by-step:Step 1: Create a sample applicationThe first thing we need is an application.For this example, I will use the following prompt to generate a Java Rest application for borrowing technical books.Create a Java rest application based on Spring Boot that allows borrowing technical books to users admins have dedicated role that are able to add books, remove books users and admins can log in by using Google OAuth as an authentication provider As the first step, show me the directory structureSince I am not interested in code but still curious about how the project would look, I have added.As the first step, show me the directory structure.ChatGPT will also give an explanation for each class.If this is something you are not interested in, just add the word "only".As the first step, show me only the directory structure.Using ASCII art, ChatGPT will present a directory structure.Hint: Sometimes chatGPT will "glitch" meaning it won't give you the full result, so just hit "continue" to get the entire output.Step 2: Quick and dirty way to create a diagram in ChatGPTNow, it's time to visualize the UML diagram.Ask ChatGpt to create a UML and sequence diagram.Prompt:*Create a UML and Sequence diagram using ASCII*You will get an ASCII representation.Do you see the problem?First, there is the limitation of using text to visualize.Second, good luck with maintaining these.Step 3: Using the right tools to create UMLTo get things further, let's use the proper tools.There are many tools on the market you can use to create UML. However, not all can be represented as text.PlantUML and MermaId are both tools that use specific diagram notations in which we can render our final diagram.Personally, I prefer MermaId as it is simpler to useNow we can use the same prompt, but this time, ask for output for MermaidUsing generated directory structure, generate UML diagram for MermaId toolNow copy the output to the MermaId tool: https://mermaid.live/classDiagram    class Application {        + main(args: String[]): void    }    class WebSecurityConfig {        <<configuration>>    }    class OAuth2Config {        <<configuration>>    }    class BookController {        + addBook(bookDTO: BookDTO): ResponseEntity<?>        + removeBook(bookId: Long): ResponseEntity<?>    }    class UserController {        + addUser(userDTO: UserDTO): ResponseEntity<?>        + removeUser(userId: Long): ResponseEntity<?>    }    class AuthController {        + loginUser(): ResponseEntity<?>    }    class Book {        - id: Long        - title: String        - author: String        - available: boolean    }    class User {        - id: Long        - username: String        - password: String        - email: String        - roles: Set<UserRole>    }    class UserRole {        <<enumeration>>        - USER        - ADMIN    }    class BookRepository {        <<interface>>    }    class UserRepository {        <<interface>>    }    class BookService {        + addBook(bookDTO: BookDTO): Book        + removeBook(bookId: Long): void    }    class UserService {        + addUser(userDTO: UserDTO): User        + removeUser(userId: Long): void    }    class UserDetailsServiceImpl {        <<service>>    }    class BookDTO {        - title: String        - author: String    }    class UserDTO {        - username: String        - password: String        - email: String    }    Application --|> WebSecurityConfig    Application --|> OAuth2Config    BookController --|> Book    UserController --|> User    AuthController --|> User    Book -- BookRepository    User -- UserRepository    BookController --|> BookService    UserController --|> UserService    UserService -- UserDetailsServiceImpl    BookController --> BookDTO    UserController --> UserDTOAnd here is the final result.Step 4: Create sequence diagramA sequence diagram, also known as a swimlane diagram, is a type of diagram that visually shows request flow.Imagine an actual swimming pool divided into lanes. Each lane is dedicated to a specific swimmer (e..g class file)Now, use the following prompt to get the swimlane diagram.Create a sequence diagram for Mermaid.Copy the output to Mermaid.Here is the output:sequenceDiagram    participant User as User    participant AuthController as "Auth Controller"    participant OAuth2Config as "OAuth2 Config"    participant UserDetailsServiceImpl as "User Details Service"    participant GoogleOAuth as "Google OAuth Provider"    participant UserDatabase as "User Database"    User ->> AuthController: Initiate Login    AuthController ->> OAuth2Config: Forward to OAuth2 Provider    OAuth2Config ->> GoogleOAuth: Send OAuth Request    GoogleOAuth -->> OAuth2Config: Receive OAuth Response    OAuth2Config -->> AuthController: Receive OAuth Response    AuthController ->> UserDetailsServiceImpl: Load User Details    UserDetailsServiceImpl ->> UserDatabase: Retrieve User Info    UserDatabase -->> UserDetailsServiceImpl: User Info    UserDetailsServiceImpl -->> AuthController: User Details    AuthController -->> User: Authentication SuccessfulHere is the full conversation with ChatGPT 3.5:https://chat.openai.com/share/70157733-da64-4a12-b15b-3607f4d1afe9Step 5: Making things even more fasterEverything we have done can now be compiled into a Mega prompt, compile all the inputs into a 1 mega prompt, and just replace the content under App descriptions.For a given app description APP DESCRIPTION START Spring boot rest application that stores reservations APP DESCRIPTION END Create directory structure, then create UML and sequence diagram for Mermaid tool using it's own syntaxBonus: ChatGPT Plus users onlyIf you are on a ChatGTP Plus subscription, you get several benefits apart from the obvious GPT4.First, ChatGPT4 itself gives you a nice text output, including some nice emojis.Prompt:Create a Java rest application based on Spring Boot that allows borrowing technical books to users admins have dedicated role that are able to add books, remove books users and admins can log in by using Google OAuth as an authentication provider As the first step, show me the directory structure with file names, use emojis to represent different content typeSecond, to speed up chart creation, you can use 2 plugins:GitHub plugin “AskTheCode” (which lets you scan the GitHub repository)Draw plugin “Mermaid Chart” -> generates diagrams for you and displays images directly as part of the chat.ConclusionPretty powerful, huh?Traditional methods of creating UML and sequence diagrams are much more time-consuming.Imagine how much time we just saved.By using this approach, you'll not only save time but get valuable insight into your architecture.Feel free to use these prompts, tweak them, and make them your own.If you want to get systems like these, please connect and reach out to me over Linkedin.Author bioJakov Semenski is an IT Architect working at IBMiX with almost 20 years of experience.He is also a ChatGPT Speaker at WeAreDevelopers conference and shares valuable tech stories on LinkedIn
Read more
  • 0
  • 0
  • 25535

article-image-ai-distilled-16-baidus-ernie-chatbot-openais-chatgpt-in-education-metas-facet-dataset-fmops-or-llmops-qualcomms-ai-focus-interecagent-liquid-neural-networks
Merlyn Shelley
08 Sep 2023
11 min read
Save for later

AI_Distilled #16: Baidu's Ernie Chatbot, OpenAI's ChatGPT in Education, Meta's FACET Dataset, FMOps or LLMOps, Qualcomm's AI Focus, InteRecAgent, Liquid Neural Networks

Merlyn Shelley
08 Sep 2023
11 min read
👋 Hello ,“Artificial intelligence is one of the most profound things we're working on as humanity. It is more profound than fire or electricity.” -Sundar Pichai, Google CEO  Pichai's AI-fire analogy signifies a transformative era; AI and ML will revolutionize education, medicine, and more, reshaping human progress. OpenAI has begun promoting the use of ChatGPT in education, which shouldn’t really come as a surprise as students the world over have been experimenting with the technology. Get ready to dive into the latest AI developments in this edition, AI_Distilled #16, including Baidu launching Ernie chatbot following Chinese government approval, X's Privacy Policy Reveals Plan to Use Public Data for AI Training, Meta releasing FACET Dataset to evaluate AI model fairness, Google’s new Multislice for scalable AI training on cloud TPUs, and Qualcomm's focus on AI and auto amidst NVIDIA's chip dominance. Watch out also for our handpicked collection of fresh AI, GPT, and LLM-focused secret knowledge and tutorials from around the web covering Liquid Neural Networks, Serverless Machine Learning with Amazon Redshift ML, implementing effective guardrails for LLMs, Navigating Generative AI with FMOps and LLMOps, and using Microsoft’s new AI compiler quartet. What do you think of this issue and our newsletter? Please consider taking the short survey below to share your thoughts and you will get a free PDF of the “The Applied Artificial Intelligence Workshop” eBook upon completion. Complete the Survey. Get a Packt eBook for Free!Writer’s Credit: Special shout-out to Vidhu Jain for their valuable contribution to this week’s newsletter content!  Cheers,  Merlyn Shelley  Editor-in-Chief, Packt  ⚡ TechWave: AI/GPT News & AnalysisMeta Releases FACET Dataset to Evaluate AI Model Fairness: Meta has launched FACET (FAirness in Computer Vision EvaluaTion), a dataset designed to assess the fairness of AI models used for image and video classification, including identifying people. Comprising 32,000 images with 50,000 labeled individuals, FACET includes demographic and physical attributes, allowing for deep evaluations of biases against various classes. Despite previous concerns about Meta's responsible AI practices, the company claims FACET is more comprehensive than previous bias benchmarks. However, concerns have been raised about the dataset's origins and the compensation of annotators. Meta has also released a web-based dataset explorer tool for FACET. You can read the full paper here. Baidu Launches Ernie Chatbot Following Chinese Government Approval: Chinese tech giant Baidu has unveiled its chatbot, Ernie Bot, after receiving government clearance, along with other AI firms. Ernie Bot is now accessible for download via app stores or Baidu's website. Similar to its rival, ChatGPT, users can engage Ernie Bot for queries, market analysis assistance, marketing slogan ideas, and document summaries. While it's accessible globally, registration requires a Chinese number, and the app is only in Chinese on US Android and iOS stores. Baidu has also introduced a plug-in market for Ernie Bot, which quickly garnered over 1 million users within 19 hours of launch. CEO Robin Li expressed plans for further AI-native apps aimed at exploring generative AI's core abilities. Google Introduces Multislice for Scalable AI Training on Cloud TPUs: Google has unveiled Multislice, a comprehensive large-scale training technology that facilitates straightforward, cost-effective, and nearly linear scaling to tens of thousands of Cloud Tensor Processing Units (TPUs) chips. Traditionally, a training run was restricted to a single slice, which meant a maximum of 3072 TPU v4 chips could be used. With Multislice, training can span multiple slices across pods through data center networking, eliminating these limitations. This innovation offers benefits such as efficient scaling for massive models, enhanced developer productivity, automatic compiler optimizations, and cost-efficiency. It promises to revolutionize AI infrastructure by enabling near-linear scaling for AI supercomputing. OpenAI Promotes Use of ChatGPT in Education: OpenAI is encouraging educators to utilize ChatGPT in classrooms. The company showcased six educators, primarily at the university level, using ChatGPT for various purposes, such as role-playing in debates, aiding translation for English-as-a-second-language students, and fact-checking. Despite some schools banning ChatGPT due to concerns about academic integrity, OpenAI believes it can be a valuable tool in education. However, it emphasizes the importance of maintaining human oversight in the assessment process. X's Privacy Policy Reveals Plan to Use Public Data for AI Training: In an update to its privacy policy, X (formerly Twitter) has informed users that it will now collect biometric data, job histories, and education backgrounds. However, another section of the policy reveals a broader plan: X intends to utilize the data it gathers, along with publicly available information, to train its machine learning and AI models. This revelation has attracted attention, particularly due to the connection with X owner Elon Musk's ambitions in the AI market through his company xAI. Musk confirmed the privacy policy change, emphasizing that only public data, not private messages, would be used for AI training.   Qualcomm's Focus on AI and Auto Amidst NVIDIA’s Chip Dominance: As NVIDIA takes the lead as the world's largest fabless chip company, Qualcomm is strategically positioning itself in the AI realm. The company has unveiled in-vehicle generative AI capabilities, expanded into two-wheelers, and forged a partnership with Amazon Web Services. Qualcomm's CEO, Cristiano Amon, believes that generative AI, currently reliant on cloud resources, will transition to local execution, enhancing performance and cost-efficiency. Diversification is also a priority, with Qualcomm's chips powering various smart devices, especially in the automotive sector. Amid uncertainty about its future relationship with Apple, Qualcomm aims to maintain its dominance through innovations in AI and auto tech. InteRecAgent, A Fusion of Language Models and Recommender Systems Introduced: Researchers from the University of Science and Technology of China, in collaboration with Microsoft Research Asia, have introduced InteRecAgent, a cutting-edge framework. This innovation seeks to combine the interactive capabilities of LLMs with the domain-specific precision of traditional recommender systems. Recommender systems play a vital role in various digital domains, but they often struggle with versatile interactions. On the other hand, LLMs excel in conversations but lack domain-specific knowledge. InteRecAgent introduces the "Candidate Memory Bus" to streamline recommendations for LLMs and a "Plan-first Execution with Dynamic Demonstrations" strategy for effective tool interaction. adidas Utilizes AI and NVIDIA RTX for Photorealistic 3D Content: Sportswear giant adidas is partnering with Covision Media, an Italian startup, to revolutionize their online shopping experience. Covision employs AI and NVIDIA RTX technology to develop 3D scanners that allow businesses to create digital twins of their products with stunning realism. This technology can quickly generate 3D scans, capturing textures, colors, and geometry, resulting in lifelike images. adidas is among the first to adopt this technology for automating and scaling e-commerce content production, enhancing their Virtual Try-On feature and replacing traditional product photography with computer-generated content.  🔮 Expert Insights from Packt CommunityServerless Machine Learning with Amazon Redshift ML - By Debu Panda, Phil Bates, Bhanu Pittampally, Sumeet JoshiData analysts and developers use Redshift data with machine learning (ML) models for tasks such as predicting customer behavior. Amazon Redshift ML streamlines this process using familiar SQL commands. A conundrum arises when attempting to decipher these data silos – a formidable challenge that hampers the derivation of meaningful insights essential for organizational clarity. Adding to this complexity, security and performance considerations typically prevent business analysts from accessing data within OLTP systems. The hiccup is that intricate analytical queries weigh down OLTP databases, casting a shadow over their core operations. Here, the solution is the data warehouse, which is a central hub of curated data, used by business analysts and data scientists to make informed decisions by employing the business intelligence and machine learning tools at their disposal. These users make use of Structured Query Language (SQL) to derive insights from this data trove. Here’s where Amazon Redshift Serverless comes in. It’s a key option within Amazon Redshift, a well-managed cloud data warehouse offered by Amazon Web Services (AWS). With cloud-based ease, Amazon Redshift Serverless lets you set up your data storage without infrastructure hassles or cost worries. You pay based on what you use for compute and storage. Amazon Redshift Serverless goes beyond convenience, propelling modern data applications that seamlessly connect to the data lake. The above content is extracted from the book Serverless Machine Learning with Amazon Redshift ML written by Debu Panda, Phil Bates, Bhanu Pittampally, Sumeet Joshi and published in Aug 2023. To get a glimpse of the book's contents, make sure to read the free chapter provided here, or if you want to unlock the full Packt digital library free for 7 days, try signing up now! To learn more, click on the button below. Keep Calm, Start Reading! 🌟 Secret Knowledge: AI/LLM ResourcesUnderstanding Liquid Neural Networks: A Primer on AI Advancements: In this post, you'll learn how liquid neural networks are transforming the AI landscape. These networks, inspired by the human brain, offer a unique and creative approach to problem-solving. They excel in complex tasks such as weather prediction, stock market analysis, and speech recognition. Unlike traditional neural networks, liquid neural networks require significantly fewer neurons, making them ideal for resource-constrained environments like autonomous vehicles. These networks excel in handling continuous data streams but may not be suitable for static data. They also provide better causality handling and interpretability. Navigating Generative AI with FMOps and LLMOps: A Practical Guide: In this informative post, you'll gain valuable insights into the world of generative AI and its operationalization using FMOps and LLMOps principles. The authors delve into the challenges businesses face when integrating generative AI into their operations. You'll explore the fundamental differences between traditional MLOps and these emerging concepts. The post outlines the roles various teams play in this process, from data engineers to data scientists, ML engineers, and product owners. The guide provides a roadmap for businesses looking to embrace generative AI. AI Compiler Quartet: A Breakdown of Cutting-Edge Technologies: Explore Microsoft’s groundbreaking "heavy-metal quartet" of AI compilers: Rammer, Roller, Welder, and Grinder. These compilers address the evolving challenges posed by AI models and hardware. Rammer focuses on optimizing deep neural network (DNN) computations, improving hardware parallel utilization. Roller tackles the challenge of memory partitioning and optimization, enabling faster compilation with good computation efficiency. Welder optimizes memory access, particularly vital as AI models become more memory-intensive. Grinder addresses complex control flow execution in AI computation. These AI compilers collectively offer innovative solutions for parallelism, compilation efficiency, memory, and control flow, shaping the future of AI model optimization and compilation.  💡 MasterClass: AI/LLM Tutorials Exploring IoT Data Simulation with ChatGPT and MQTTX: In this comprehensive guide, you'll learn how to harness the power of AI, specifically ChatGPT, and the MQTT client tool, MQTTX, to simulate and generate authentic IoT data streams. Discover why simulating IoT data is crucial for system verification, customer experience enhancement, performance assessment, and rapid prototype design. The article dives into the integration of ChatGPT and MQTTX, introducing the "Candidate Memory Bus" to streamline data testing. Follow the step-by-step guide to create simulation scripts with ChatGPT and efficiently simulate data transmission with MQTTX.  Revolutionizing Real-time Inference: SageMaker Unveils Streaming Support for Generative AI: Amazon SageMaker now offers real-time response streaming, transforming generative AI applications. This new feature enables continuous response streaming to clients, reducing time-to-first-byte and enhancing interactive experiences for chatbots, virtual assistants, and music generators. The post guides you through building a streaming web application using SageMaker real-time endpoints for interactive chat use cases. It showcases deployment options with AWS Large Model Inference (LMI) and Hugging Face Text Generation Inference (TGI) containers, providing a seamless, engaging conversation experience for users. Implementing Effective Guardrails for Large Language Models: Guardrails are crucial for maintaining trust in LLM applications as they ensure compliance with defined principles. This guide presents two open-source tools for implementing LLM guardrails: Guardrails AI and NVIDIA NeMo-Guardrails. Guardrails AI offers Python-based validation of LLM responses, using the RAIL specification. It enables developers to define output criteria and corrective actions, with step-by-step instructions for implementation. NVIDIA NeMo-Guardrails introduces Colang, a modeling language for flexible conversational workflows. The guide explains its syntax elements and event-driven design. Comparing the two, Guardrails AI suits simple tasks, while NeMo-Guardrails excels in defining advanced conversational guidelines. 🚀 HackHub: Trending AI Toolscabralpinto/modular-diffusion: Python library for crafting and training personalized Diffusion Models with PyTorch.  cofactoryai/textbase: Simplified Python chatbot development using NLP and ML with Textbase's on_message function in main.py. microsoft/BatteryML: Open-source ML tool for battery analysis, aiding researchers in understanding electrochemical processes and predicting battery degradation. facebookresearch/co-tracker: Swift transformer-based video tracker with Optical Flow, pixel-level tracking, grid sampling, and manual point selection. explodinggradients/ragas: Framework evaluates Retrieval Augmented Generation pipelines, enhancing LLM context with external data using research-based tools. 
Read more
  • 0
  • 0
  • 4824

article-image-chatgpt-for-exploratory-data-analysis-eda
Rama Kattunga
08 Sep 2023
9 min read
Save for later

ChatGPT for Exploratory Data Analysis (EDA)

Rama Kattunga
08 Sep 2023
9 min read
IntroductionExploratory data analysis (EDA) refers to the initial investigation of data to discover patterns, identify outliers and anomalies, test hypotheses, and check assumptions with the goal of informing future analysis and model building. It is an iterative, exploratory process of questioning, analyzing, and visualizing data.Some key aspects of exploratory data analysis include:Getting to know the data - Examining individual variables, their values, distributions, and relationships between variables.Data cleaning - Checking and handling missing values, outliers, formatting inconsistencies, etc., before further analysis.Univariate analysis - Looking at one variable at a time to understand its distribution, central tendency, spread, outliers, etc.Bivariate analysis - Examining relationships between two variables using graphs, charts, and statistical tests. This helps find correlations.Multivariate analysis - Analyzing patterns between three or more variables simultaneously using techniques like cluster analysis.Hypothesis generation - Coming up with potential explanations or hypotheses about relationships in the data based on initial findings.Data visualization - Creating graphs, plots, and charts to summarize findings and detect patterns and anomalies more easily.The goals of EDA are to understand the dataset, detect useful patterns, formulate hypotheses, and make decisions on how to prepare/preprocess the data for subsequent modeling and analysis. It is an iterative, exploratory process of questioning, analyzing, and visualizing data.Why ChatGPT for EDA?Exploratory data analysis (EDA) is an important but often tedious process with challenges and pitfalls. The use of ChatGPT saves hours on repetitive tasks. ChatGPT handles preparatory data wrangling, exploration, and documentation - freeing you to focus on insights. Its capabilities will only grow through continued learning. Soon, it may autonomously profile datasets and propose multiple exploratory avenues. ChatGPT is the perfect on-demand assistant for solo data scientists and teams seeking an effortless boost to the EDA process. The drawback of ChatGPT is it can only handle small datasets. There are a few methods like handling smaller datasets and generating Python code to do the necessary analysis.The following table provides detailed challenges/pitfalls during EDA:Challenge/PitfallDetailsGetting lost in the weedsSpending too much time on minor details without focusing on the big picture. This leads to analysis paralysis.Premature conclusionsDrawing conclusions without considering all possible factors or testing different hypotheses thoroughly.BiasPersonal biases, preconceptions or domain expertise can skew analysis in a particular direction.Multiple comparisonsTesting many hypotheses without adjusting for Type 1 errors, leading to false discoveries.DocumentationFailing to properly document methods, assumptions, and thought processes along the way.Lack of focusJumping randomly without a clear understanding of the business objective.Ignoring outliersNot handling outliers appropriately, can distort analysis and patterns.Correlation vs causationIncorrectly inferring causation based only on observed correlations.OverfittingFinding patterns in sample data that may not generalize to new data.Publication biasOnly focusing on publishable significant or "interesting" findings.Multiple rolesWearing data analyst and subject expert hats, mixing subjective and objective analysis. With ChatGPT, get an AI assistant to be your co-pilot on the journey of discovery. ChatGPT can provide EDA at various stages of your data analysis within the limits that we discussed earlier. The following table provides different stages of data analysis with prompts (these prompts either generate the output or Python code for you to execute separately):Type of EDAPromptSummary StatisticsDescribe the structure and summary statistics of this dataset. Check for any anomalies in variable distributions or outliers.Univariate AnalysisCreate histograms and density plots of each numeric variable to visualize their distributions and identify any unusual shapes or concentrations of outliers.Bivariate AnalysisGenerate a correlation matrix and heatmap to examine relationships between variables. Flag any extremely high correlations that could indicate multicollinearity issues.Dimensionality ReductionUse PCA to reduce the dimensions of this high-dimensional dataset and project it into 2D. Do any clusters or groupings emerge that provide new insights?ClusteringApply K-Means clustering on the standardized dataset with different values of k. Interpret the resulting clusters and check if they reveal any meaningful segments or categories.Text AnalysisSummarize the topics and sentiments discussed in this text column using topic modeling algorithms like LDA. Do any dominant themes or opinions stand out?Anomaly DetectionImplement an isolation forest algorithm on the dataset to detect outliers independently in each variable. Flag and analyze any suspicious or influential data points.Model PrototypingQuickly prototype different supervised learning algorithms like logistic regression, decision trees, random forest on this classification dataset. Compare their performance and feature importance.Model EvaluationGenerate a correlation matrix between predicted vs actual values from different models. Any low correlations potentially indicate nonlinear patterns worth exploring further.Report GenerationAutogenerate a Jupyter notebook report with key visualizations, findings, concentrations, and recommendations for the next steps based on the exploratory analyses performed.How do we feed data to ChatGPT for EDA?Describe your dataset through natural language prompts, and ChatGPT instantly runs analyses to find hidden insights. No need to write code - let the AI do the heavy lifting! For this article, let’s use the CSV file available at: (https://media.githubusercontent.com/media/datablist/sample-csv-files/main/files/organizations/organizations-1000.csv) (http://tinyurl.com/mphebj4k)Here are some examples of how ChatGPT can be used for exploratory data analysis:Prompts:Describe the structure and summary statistics of this CSV file: [Pasted URL or file contents]What variable types are in this DataFrame? Import Pandas and show column data types.Generate a correlation matrix and heatmap for these variables.Check for missing values in each column and calculate the percentage missing.Create a histogram to visualize the distribution of this numeric variable.Compare the means of this categorical variable across groups using a boxplot.In the below example, I pasted two hundred rows and see the prompt I gave.This resulted in the following.Look at the column details it provided. Asking for the list of categorical and numerical variables in table format produces the below:Asking for a statistical summary of numerical columns would produce the following:Python Code generation:For certain aspects of EDA, ChatGPT produces Python code with pandas library import and the result will be shown like this:import pandas as pd import matplotlib.pyplot as plt import seaborn as sns # Load the CSV file from the URL into a DataFrame url = "https://media.githubusercontent.com/media/datablist/sample-csv-files/main/files/organizations/organizations-1000.csv" df = pd.read_csv(url) # Display basic information about the DataFrame print("Basic Info About the DataFrame:") print(df.info()) # Display the first few rows of the DataFrame print("\nFirst Few Rows of the DataFrame:") print(df.head()) # Summary statistics of numerical columns print("\nSummary Statistics of Numerical Columns:") print(df.describe()) # Check for missing values print("\nMissing Values:") print(df.isnull().sum()) # Visualize data # Example: Histogram of a numerical column (replace 'col_name' with the column name you want to plot) # plt.hist(df['col_name'], bins=20) # plt.xlabel('X-axis Label') # plt.ylabel('Y-axis Label') # plt.title('Histogram of col_name') # plt.show() # You can create more visualizations and explore relationships between columns as needed. # Correlation matrix heatmap (for numerical columns) correlation_matrix = df.corr() plt.figure(figsize=(10, 8)) sns.heatmap(correlation_matrix, annot=True, cmap="coolwarm", fmt=".2f") plt.title("Correlation Matrix Heatmap") plt.show()Running this in Spyder (Anaconda UI) produces the following output without a single error: EDA on large datasets with millions of recordsAs mentioned earlier in this article, ChatGPT is very powerful for its size, but there are still limitations since it runs on general consumer hardware rather than massive server clusters. Here are a few things to keep in mind regarding its capabilities with large datasets:ChatGPT works best for datasets under 50-100MB in size. It can handle some operations on larger files up to 1GB, but performance will degrade.For initial exploration of very large datasets, ChatGPT is still useful. It can quickly summarize dimensions, types, distributions, outliers, etc., to help shape hypotheses.Advanced analytics like complex multi-variable modeling may not be feasible on the largest datasets directly in ChatGPT.However, it can help with the data prep - filtering, aggregations, feature engineering, etc. to reduce a large dataset into a more manageable sample for detailed analysis.Integration with tools that can load large datasets directly (e.g., BigQuery, Spark, Redshift) allows ChatGPT to provide insights on files too big to import wholesale.As AI capabilities continue advancing, future versions powered by more computing may be able to handle larger files for a broader set of analytics tasks.ConclusionChatGPT revolutionizes Exploratory Data Analysis (EDA) by streamlining the process and making it accessible to a wider audience. EDA is crucial for understanding data, and ChatGPT automates tasks like generating statistics, visualizations, and even code, simplifying the process.ChatGPT's natural language interface enables users to interact with data using plain language, eliminating the need for extensive coding skills. While it excels in initial exploration and data preparation, it may have limitations with large datasets or complex modeling tasks. ChatGPT is a valuable EDA companion, empowering data professionals to uncover insights and make data-driven decisions efficiently. ChatGPT's role in data analytics is expected to expand as AI technology evolves, offering even more support for data-driven decision-making.Author BioRama Kattunga has been working with data for over 15 years at tech giants like Microsoft, Intel, and Samsung. As a geek and a business wonk with degrees from Kellogg and two technology degrees from India, Rama uses his engineering know-how and strategy savvy to get stuff done with analytics, AI, and unlocking insights from massive datasets. When he is not analyzing data, you can find Rama sharing his thoughts as an author, speaker, and digital transformation specialist. Moreover, Rama also finds joy in experimenting with cooking, using videos as his guide to create delicious dishes that he can share with others. This diverse range of interests and skills highlights his well-rounded and dynamic character. LinkedIn
Read more
  • 0
  • 0
  • 44088

article-image-chatgpt-for-healthcare
Amita Kapoor
05 Sep 2023
9 min read
Save for later

ChatGPT for Healthcare

Amita Kapoor
05 Sep 2023
9 min read
IntroductionMeet ChatGPT: OpenAI's marvelously verbose chatbot, trained on a veritable Everest of text and code. Think of it as your go-to digital polymath, fluent in language translation, a whiz at whipping up creative content, and ever-eager to dispense knowledge on everything from quantum physics to quinoa recipes. Ready to dial in the healthcare lens? This article is your rollercoaster ride through the trials, triumphs, and tangled ethical conundrums of ChatGPT in medicine. From game-changing potential to challenges as stubborn as symptoms, we've got it all. So whether you're a seasoned healthcare pro or a tech-savvy newbie, buckle up. Will ChatGPT be healthcare's new MVP or get benched? Stick around, and let's find out together. Doctor in Your Pocket? Unpacking the Potential of ChatGPT in Healthcare Modern healthcare always seeks innovation to make things smoother and more personal. Enter ChatGPT. While not a stand-in for a doctor, this text-based AI is causing ripples from customer service to content. Below are various scenarios where ChatGPT can be leveraged in its original form or fine-tuned APIs. Pre-Consultation Screeners - ChatGPT-Enabled Triage Before conversational AI, healthcare looked into computational diagnostic aids like the 1960s' Dendral, initially for mass spectrometry, inspiring later medical systems. The 1970s brought MYCIN, designed for diagnosing bacterial infections and suggesting antibiotics. However, these early systems used inflexible "if-then" rules and lacked adaptability for nuanced human interaction. Fast-forward to today's more sophisticated digital triage platforms, and we still find remnants of these rule-based systems. While significantly more advanced, many of these platforms operate within the bounds of scripted pathways, leading to linear and often inflexible patient interactions. This rigidity can result in an inadequate capture of patient nuances, a critical aspect often needed for effective medical triage. The ChatGPT Advantage: Flexibility and Natural Engagement ChatGPT is a conversational agent with the capacity for more flexible, natural interactions due to its advanced Natural Language Understanding (NLU). Unlike conventional scanners with limited predefined pathways, ChatGPT can adapt to a broader range of patient inputs, making the pre-consultation phase more dynamic and patient-centric. It offers: Adaptive Questioning: Unlike traditional systems that follow a strict query pathway, ChatGPT can adapt its questions based on prior patient responses, potentially unearthing critical details. Contextual Understanding: Its advanced NLU allows it to understand colloquial language, idioms, and contextual cues that more rigid systems may miss. Data Synthesis: ChatGPT's ability to process and summarise information can result in a more cohesive pre-consultation report for healthcare providers, aiding in a more effective diagnosis and treatment strategy. Using LLMs bots like ChatGPT offers a more dynamic, flexible, and engaging approach to pre-consultation screening, optimising patient experience and healthcare provider efficacy. Below is a sample code that you can use to play around: import openai import os # Initialize OpenAI API Client api_key = os.environ.get("OPENAI_API_KEY")  # Retrieve the API key from environment variables openai.api_key = api_key  # Set the API key # Prepare the list of messages messages = [ {"role": "system", "content": "You are a pre-consultation healthcare screener. Assist the user in gathering basic symptoms before their doctor visit."}, {"role": "user", "content": "I've been feeling exhausted lately and have frequent headaches."} ] # API parameters model = "gpt-3.5-turbo"  # Choose the appropriate engine max_tokens = 150  # Limit the response length # Make API call response = openai.ChatCompletion.create( model=model, messages=messages ) # Extract and print chatbot's reply chatbot_reply = response['choices'][0]['message']['content'] print("ChatGPT: ", chatbot_reply) And here is the ChatGPT response: Mental Health Companionship The escalating demand for mental health services has increased focus on employing technology as supplemental support. While it is imperative to clarify that ChatGPT is not a substitute for qualified mental health practitioners, the platform can serve as an initial point of contact for individuals experiencing non-critical emotional distress or minor stress and anxiety. Utilizing advanced NLU and fine-tuned algorithms, ChatGPT provides an opportunity for immediate emotional support, particularly during non-operational hours when traditional services may be inaccessible. ChatGPT can be fine-tuned to handle the sensitivities inherent in mental health discussions, thereby adhering to ethically responsible boundaries while providing immediate, albeit preliminary, support. ChatGPT offers real-time text support, serving as a bridge to professional help. Its advanced NLU understands emotional nuances, ensuring personalized interactions. Beyond this, ChatGPT recommends vetted mental health resources and coping techniques. For instance, if you're anxious outside clinical hours, it suggests immediate stress management tactics. And if you're hesitant about professional consultation, ChatGPT helps guide and reassure your decision. Let us now see, how by just changing the prompt we can use the same code as that of ChatGPT enabled triage to build a mental health companion: messages = [ {        "role": "system",        "content": "You are a virtual mental health companion. Your primary role is to provide a supportive environment for the user. Listen actively, offer general coping strategies, and identify emotional patterns or concerns. Remember, you cannot replace professional mental health care, but can act as an interim resource. Always prioritise the user's safety and recommend seeking professional help if the need arises. Be aware of various emotional and mental scenarios, from stress and anxiety to deeper emotional concerns. Remain non-judgmental, empathetic, and consistently supportive."    }, {    "role": "user",    "content": "I've had a long and stressful day at work. Sometimes, it just feels like everything is piling up and I can't catch a break. I need some strategies to unwind and relax." } ] And here is the golden advice from ChatGPT:  Providing immediate emotional support and resource guidance can be a preliminary touchpoint for those dealing with minor stress and anxiety, particularly when conventional support mechanisms are unavailable. Virtual Health Assistants  In the evolving healthcare landscape, automation and artificial intelligence (AI) are increasingly being leveraged to enhance efficiency and patient care. One such application is the utilization of Virtual Health Assistants, designed to manage administrative overhead and provide informational support empathetically. The integration of ChatGPT via OpenAI's API into telehealth platforms signifies a significant advancement in this domain, offering capabilities far surpassing traditional rule-based or keyword-driven virtual assistants. ChatGPT boasts a customizable framework ideal for healthcare, characterized by its contextual adaptability for personalized user experiences, vast informational accuracy, and multi-functional capability that interfaces with digital health tools while upholding medical guidelines. In contrast, traditional Virtual Health Assistants, reliant on rule-based systems, suffer from scalability issues, rigid interactions, and a narrow functional scope. ChatGPT stands out by simplifying medical jargon, automating administrative chores, and ensuring a seamless healthcare journey—bridging pre-consultation to post-treatment, all by synthesizing data from diverse health platforms. Now, let's explore how tweaking the prompt allows us to repurpose the previous code to create a virtual health assistant. messages = [ {    "role": "system",    "content": "You are a Virtual Health Assistant (VHA). Your primary function is to assist users in navigating the healthcare landscape. Offer guidance on general health queries, facilitate appointment scheduling, and provide informational insights on medical terminologies. While you're equipped with a broad knowledge base, it's crucial to remind users that your responses are not a substitute for professional medical advice or diagnosis. Prioritise user safety, and when in doubt, recommend that they seek direct consultation from healthcare professionals. Be empathetic, patient-centric, and uphold the highest standards of medical data privacy and security in every interaction." }, {    "role": "user",    "content": "The doctor has recommended an Intestinal Perforation Surgery for me, scheduled for Sunday. I'm quite anxious about it. How can I best prepare mentally and physically?" } ] Straight from ChatGPT's treasure trove of advice:  So there you have it. Virtual Health Assistants might not have a medical degree, but they offer the next best thing: a responsive, informative, and competent digital sidekick to guide you through the healthcare labyrinth, leaving doctors free to focus on what really matters—your health. Key Contributions Patient Engagement: Utilising advanced Natural Language Understanding (NLU) capabilities, ChatGPT can facilitate more nuanced and personalised interactions, thus enriching the overall patient experience. Administrative Efficiency: ChatGPT can significantly mitigate the administrative load on healthcare staff by automating routine tasks such as appointment scheduling and informational queries. Preventative Measures: While not a diagnostic tool, ChatGPT's capacity to provide general health information and recommend further professional consultation can contribute indirectly to early preventative care. Potential Concerns and Solutions Data Security and Privacy: ChatGPT, in its current form, does not fully meet healthcare data security requirements. Solution: For HIPAA compliance, advanced encryption, and secure API interfaces must be implemented. Clinical Misinformation: While ChatGPT can provide general advice, there are limitations to the clinical validity of its responses. Solution: It is critical that all medical advice provided by ChatGPT is cross-referenced with up-to-date clinical guidelines and reviewed by medical professionals for accuracy. Ethical Considerations: The impersonal nature of a machine providing health-related advice could potentially result in a lack of emotional sensitivity. Solution: Ethical guidelines must be established for the algorithm, possibly integrating a 'red flag' mechanism that alerts human operators when sensitive or complex issues arise that require a more nuanced touch. Conclusion ChatGPT, while powerful, isn't a replacement for the expertise of healthcare professionals. Instead, it serves as an enhancing tool within the healthcare sector. Beyond aiding professionals, ChatGPT can increase patient engagement, reduce administrative burdens, and help in preliminary health assessments. Its broader applications include transcribing medical discussions, translating medical information across languages, and simplifying complex medical terms for better patient comprehension. For medical training, it can mimic patient scenarios, aiding in skill development. Furthermore, ChatGPT can assist in research by navigating medical literature, and conserving crucial time. However, its capabilities should always be seen as complementary, never substituting the invaluable care from healthcare professionals. Author BioAmita Kapoor is an accomplished AI consultant and educator with over 25 years of experience. She has received international recognition for her work, including the DAAD fellowship and the Intel Developer Mesh AI Innovator Award. She is a highly respected scholar with over 100 research papers and several best-selling books on deep learning and AI. After teaching for 25 years at the University of Delhi, Amita retired early and turned her focus to democratizing AI education. She currently serves as a member of the Board of Directors for the non-profit Neuromatch Academy, fostering greater accessibility to knowledge and resources in the field. After her retirement, Amita founded NePeur, a company providing data analytics and AI consultancy services. In addition, she shares her expertise with a global audience by teaching online classes on data science and AI at the University of Oxford. 
Read more
  • 0
  • 0
  • 18171
Unlock access to the largest independent learning library in Tech for FREE!
Get unlimited access to 7500+ expert-authored eBooks and video courses covering every tech area you can think of.
Renews at $19.99/month. Cancel anytime
article-image-ai-distilled-15-openai-unveils-chatgpt-enterprise-code-llama-by-meta-vulcansql-from-hugging-face-microsofts-algorithm-of-thoughts-google-deepminds-synthid
Merlyn Shelley
31 Aug 2023
14 min read
Save for later

AI_Distilled #15: OpenAI Unveils ChatGPT Enterprise, Code Llama by Meta, VulcanSQL from Hugging Face, Microsoft's "Algorithm of Thoughts”, Google DeepMind's SynthID

Merlyn Shelley
31 Aug 2023
14 min read
👋 Hello ,“[AI] will touch every sector, every industry, every business function, and significantly change the way we live and work..this isn’t just the future. We are already starting to experience the benefits right now. As a company, we’ve been preparing for this moment for some time.” -Sundar Pichai, CEO, Google Speaking at the ongoing Google Cloud Next conference, Pichai emphasized how AI is the future, and it’s here already.   Step into the future with AI_Distilled#15, showcasing the breakthroughs in AI/ML, LLMs, NLP, GPT, and Generative AI, as we talk about Nvidia reporting over 100% increase in sales amid high demand for AI chips, Meta introducing Code Llama: a breakthrough in AI-powered coding assistance, OpenAI introducing ChatGPT Enterprise for businesses, Microsoft’s promising new "Algorithm of Thoughts" to enhance AI reasoning, and Salesforce's State of the Connected Customer Report which shows how businesses are facing AI trust gap with customers. Looking for fresh knowledge resources and tutorials? We’ve got your back! Look out for our curated collection of posts on how to use Code Llama, mitigating hallucination in LLMs, Google’s: Region-Aware Pre-Training for Open-Vocabulary Object Detection with Vision Transformers, and making data queries with Hugging Face's VulcanSQL.  We’ve also handpicked some great GitHub repos for you to use on your next AI project! What do you think of this issue and our newsletter? Please consider taking the short survey below to share your thoughts and you will get a free PDF of the “The Applied Artificial Intelligence Workshop” eBook upon completion. Complete the Survey. Get a Packt eBook for Free!Writer’s Credit: Special shout-out to Vidhu Jain for their valuable contribution to this week’s newsletter content!  Cheers,  Merlyn Shelley  Editor-in-Chief, Packt   ⚡ TechWave: AI/GPT News & Analysis OpenAI Introduces ChatGPT Enterprise: AI Solution for Businesses: OpenAI has unveiled ChatGPT Enterprise with advanced features. The enterprise-grade version offers enhanced security, privacy, and access to the more powerful GPT-4 model. It includes unlimited usage of GPT-4, higher-speed performance, longer context windows for processing lengthier inputs, advanced data analysis capabilities, customization options, and more, targeting improved productivity, customized workflows, and secure data management. Meta Introduces Code Llama: A Breakthrough in AI-Powered Coding Assistance: Code Llama is a cutting-edge LLM designed to generate code based on text prompts and is tailored for code tasks and offers the potential to enhance developer productivity and facilitate coding education. Built on Llama 2, Code Llama comes in different models, including the foundational code model, Python-specialized version, and an instruct variant fine-tuned for understanding natural language instructions. The models outperformed existing LLMs on code tasks and hold promise for revolutionizing coding workflows while adhering to safety and responsible use guidelines. Nvidia Reports Over 100% Increase in Sales Amid High Demand for AI Chips: Nvidia has achieved record-breaking sales, more than doubling its revenue to over $13.5 billion for the quarter ending in June. The company anticipates further growth in the current quarter and plans to initiate a stock buyback of $25 billion. Its stock value soared by more than 6.5% in after-hours trading, bolstering its substantial gains this year. Nvidia's data center business, which includes AI chips, fueled its strong performance, with revenue surpassing $10.3 billion, driven by cloud computing providers and consumer internet firms adopting its advanced processors. With a surge in its market value, Nvidia joined the ranks of trillion-dollar companies alongside Apple, Microsoft, Alphabet, and Amazon. Businesses Facing AI Trust Gap with Customers, Reveals Salesforce's State of the Connected Customer Report: Salesforce's sixth edition of the State of the Connected Customer report highlights a growing concern among businesses about an AI trust gap with their customers. The survey, conducted across 25 countries with over 14,000 consumers and business buyers, indicates that as companies increasingly adopt AI to enhance efficiency and meet customer expectations, nearly three-quarters of their customers are worried about unethical AI use. Consumer receptivity to AI has also decreased over the past year, urging businesses to address this gap by implementing ethical guidelines and providing transparency into AI applications. Microsoft Introduces "Algorithm of Thoughts" to Enhance AI Reasoning: Microsoft has unveiled a novel AI training method called the "Algorithm of Thoughts" (AoT), aimed at enhancing the reasoning abilities of large language models like ChatGPT by combining human-like cognition with algorithmic logic. This new approach leverages "in-context learning" to guide language models through efficient problem-solving paths, resulting in faster and less resource-intensive solutions. The technique outperforms previous methods and can even surpass the algorithm it is based on.  Google's Duet AI Expands Across Google Cloud with Enhanced Features: Google's Duet AI, a suite of generative AI capabilities for tasks like text summarization and data organization, is expanding its reach to various products and services within the Google Cloud ecosystem. The expansion includes assisting with code refactoring, offering guidance on infrastructure configuration and deployment in the Google Cloud Console, writing code in Google's dev environment Cloud Workstations, generating flows in Application Integration, and more. ̌It also integrates generative AI advancements into the security product line. OpenAI Collaborates with Scale to Enhance Enterprise Model Fine-Tuning Support: OpenAI has entered into a partnership with Scale to provide expanded support for enterprises seeking to fine-tune advanced models. Recognizing the demand for high performance and customization in AI deployment, OpenAI introduced fine-tuning for GPT-3.5 Turbo and plans to extend it to GPT-4. This feature empowers companies to customize advanced models with proprietary data, enhancing their utility. OpenAI assures that customer data remains confidential and is not utilized to train other models. Google DeepMind Introduces SynthID: A Tool to Identify AI-Generated Images: In response to the growing prevalence of AI-generated images that can be indistinguishable from real ones, Google Cloud has partnered with Imagen to unveil SynthID. This newly launched beta version aims to watermark and identify AI-created images. The technology seamlessly embeds a digital watermark into the pixels of an image, allowing for imperceptible yet detectable identification. This tool is a step towards responsible use of generative AI and enhances the capacity to identify manipulated or fabricated images.   ✨ Unleashing the Power of Causal Reasoning with LLMs:Join Aleksander Molak on October 11th and be a part of Packt's most awaited event of 2023 on Generative AI! In AI's evolution, a big change is coming. It's all about Causally Aware Prompt Engineering, and you should pay attention because it's important. LLMs are good at recognizing patterns, but what if they could do more? That's where causal reasoning comes in. It's about understanding not just what's connected but why. Let's distill the essence: - LLMs can outperform causal discovery algorithms on some tasks  - GPT-4 achieves a near-human performance on some counterfactual benchmarks  - This might be the case because the models simply memorize the data, but it's also possible that they build a **meta-SCM** (meta structural causal models) based on the correlations of causal facts learned from the data  - LLMs can reason causally if we allow them to intervene on the test time  - LLMs do not reason very well, when we provide them with verbal description of conditional independence structures in the data (but nor do (most of) humans). Now, catalyze your journey with three simple techniques: Causal Effect Estimation: Causal effect estimate aims at capturing the strength of (expected) change in the outcome variable when we modify the value of the treatment by one unit. In practice, almost any machine learning algorithm can be used for this purpose, yet in most cases we need to use these algorithms in a way that differs from the classical machine learning flow. Confronting Confounding: The main challenge (yet not the only one) in estimating causal effects from observational data comes from confounding. Confounder is a variable in the system of interest that produces a spurious relationship between the treatment and the outcome. Spurious relationships are a kind of illusion. Interestingly, you can observe spurious relationships not only in the recorded data, but also in the real world. Unveiling De-confounding: To obtain an unbiased estimate of the causal effect, we need to get rid of confounding. At the same time, we need to be careful not to introduce confounding ourselves! This usually boils down to controlling for the right subset of variables in your analysis. Not too small, not too large. If you're intrigued by this, I invite you to join me for an in-depth exploration of this fascinating topic at Packt's upcoming Generative AI conference on October 11th. During my power-talk, we'll delve into the question: Can LLMs learn Causally?  REGISTER NOW at Early Bird discounted pricing! *Free eBook on Registration: Modern Generative AI with ChatGPT and OpenAI Models   🔮 Expert Insights from Packt Community The Regularization Cookbook - By Vincent Vandenbussche Regularization serves as a valuable approach to enhance the success rate of ML models in production. Effective regularization techniques can prevent AI recruitment models from exhibiting gender biases, either by eliminating certain features or incorporating synthetic data. Additionally, proper regularization enables chatbots to maintain an appropriate level of sensitivity toward new tweets. It also equips models to handle edge cases and previously unseen data proficiently, even when trained on synthetic data. Key concepts of regularization Let us now delve into a more precise definition and explore key concepts that enable us to better comprehend regularization. Bias and variance Bias and variance are two key concepts when talking about regularization. We can define two main kinds of errors a model can have: Bias is how bad a model is at capturing the general behavior of the data Variance is how bad a model is at being robust to small input data fluctuations Let’s describe those four cases: High bias and low variance: The model is hitting away from the center of the target, but in a very consistent manner Low bias and high variance: The model is, on average, hitting the center of the target, but is quite noisy and inconsistent in doing so High bias and high variance: The model is hitting away from the center in a noisy way Low bias and low variance: The best of both worlds – the model is hitting the center of the target consistently  The above content is extracted from the book The Regularization Cookbook By Vincent Vandenbussche and published in July 2023. To get a glimpse of the book's contents, make sure to read the free chapter provided here, or if you want to unlock the full Packt digital library free for 7 days, try signing up now! To learn more, click on the button below. Keep Calm, Start Reading!  🌟 Secret Knowledge: AI/LLM Resources Google’s RO-ViT: Region-Aware Pre-Training for Open-Vocabulary Object Detection with Vision Transformers: Google's research scientists have unveiled a new method called "RO-ViT" that enhances open-vocabulary object detection using vision transformers. Learn how the technique addresses limitations in existing pre-training approaches for vision transformers, which struggle to fully leverage the concept of objects or regions during pre-training. RO-ViT introduces a novel approach called "cropped positional embedding" that aligns better with region-level tasks.Tiered AIOps: Enhancing Cloud Platform Management with AI: Explore the concept of Tiered AIOps to manage complex cloud platforms. The ever-changing nature of cloud applications and infrastructure presents challenges for complete automation, requiring a tiered approach to combine AI and human intervention. The concept involves dividing operations into tiers, each with varying levels of automation and human expertise. Tier 1 incorporates routine operations automated by AI, Tier 2 empowers non-expert operators with AI assistance, and Tier 3 engages expert engineers for complex incidents. Effective AI-Agent Interaction: SERVICE Principles Unveiled: In this post, you'll learn how to design AI agents that can interact seamlessly and effectively with users, aiming to transition from self-service to "agent-service." The author introduces the concept of autonomous AI agents capable of performing tasks on users' behalf and offers insights into their potential applications. The SERVICE principles, rooted in customer service and hospitality practices, are presented as guidelines for designing agent-user interactions. These principles encompass key aspects like salient responses, explanatory context, reviewable inputs, vaulted information, indicative guidance, customization, and empathy.  How to Mitigate Hallucination in Large Language Models: In this article, researchers delve into the persistent challenge of hallucination in Generative LLMs. The piece explores the reasons behind LLMs generating nonsensical or non-factual responses, and the potential consequences for system reliability. The focus is on practical approaches to mitigate hallucination, including adjusting the temperature parameter, employing thoughtful prompt engineering, and incorporating external knowledge sources. The authors conduct experiments to evaluate different methods, such as Chain of Thoughts, Self-Consistency, and Tagged Context Prompts.    💡 MasterClass: AI/LLM Tutorials How to Use Code Llama: A Breakdown of Features and Usage: Code Llama has made a significant stride in code-related tasks, offering an open-access suite of models specialized for code-related challenges. This release includes various notable components, such as integration within the Hugging Face ecosystem, transformative integration, text generation inference, and inference endpoints. Learn how these models showcase remarkable performance across programming languages, enabling enhanced code understanding, completion, and infilling.  Make Data Queries with Hugging Face's VulcanSQL: In this post, you'll learn how to utilize VulcanSQL, an open-source data API framework, to streamline data queries. VulcanSQL integrates Hugging Face's powerful inference capabilities, allowing data professionals to swiftly generate and share data APIs without extensive backend knowledge. By incorporating Hugging Face's Inference API, VulcanSQL enhances the efficiency of query processes. The framework's HuggingFace Table Question Answering Filter offers a unique solution by leveraging pre-trained AI models for NLP tasks.  Exploring Metaflow and Ray Integration for Supercharged ML Workflows: Explore the integration of Metaflow, an extensible ML orchestration framework, with Ray, a distributed computing framework. This collaboration leverages AWS Batch and Ray for distributed computing, enhancing Metaflow’s capabilities. Know how this integration empowers Metaflow users to harness Ray’s features within their workflows. The article also delves into the challenges faced, the technical aspects of the integration, and real-world test cases, offering valuable insights into building efficient ML workflows using these frameworks. Explore Reinforcement Learning Through Solving Leetcode Problems: Explore how reinforcement learning principles can be practically grasped by solving a Leetcode problem. The article centers around the "Shortest Path in a Grid with Obstacles Elimination" problem, where an agent aims to find the shortest path from a starting point to a target in a grid with obstacles, considering the option to eliminate a limited number of obstacles. Explore the foundations of reinforcement learning, breaking down terms like agent, environment, state, and reward system. The author provides code examples and outlines how a Q-function is updated through iterations.    🚀 HackHub: Trending AI Tools apple/ml-fastvit: Introduces a rapid hybrid ViT empowered by structural reparameterization for efficient vision tasks. openchatai/opencopilot: A personal AI copilot repository that seamlessly integrates with APIs and autonomously executes API calls using LLMs, streamlining developer tasks and enhancing efficiency. neuml/txtai: An embeddings database for advanced semantic search, LLM orchestration, and language model workflows featuring vector search, multimodal indexing, and flexible pipelines for text, audio, images, and more. Databingo/aih: Interact with AI models via terminal (Bard, ChatGPT, Claude2, and Llama2) to explore diverse AI capabilities directly from your command line. osvai/kernelwarehouse: Optimizes dynamic convolution by redefining kernel concepts, improving parameter dependencies, and increasing convolutional efficiency. morph-labs/rift: Open-source AI-native infrastructure for IDEs, enabling collaborative AI software engineering. mr-gpt/deepeval: Python-based solution for offline evaluations of LLM pipelines, simplifying the transition to production. 
Read more
  • 0
  • 0
  • 19155

article-image-unleashing-the-power-of-wolfram-alpha-api-with-python-and-chatgpt
Alan Bernardo Palacio
31 Aug 2023
6 min read
Save for later

Unleashing the Power of Wolfram Alpha API with Python and ChatGPT

Alan Bernardo Palacio
31 Aug 2023
6 min read
IntroductionIn the ever-evolving landscape of artificial intelligence, a groundbreaking collaboration has emerged between Wolfram Alpha and ChatGPT, giving birth to an extraordinary plugin: the AI Advantage. This partnership bridges the gap between ChatGPT's proficiency in natural language processing and Wolfram Alpha's computational prowess. The result? A fusion that unlocks an array of new possibilities, revolutionizing the way we interact with AI. In this hands-on tutorial, we're embarking on a journey to explore the power of the Wolfram Alpha API, demonstrate its integration with Python and ChatGPT, and empower you to tap into this dynamic duo for tasks ranging from complex calculations to real-time data retrieval.Understanding Wolfram Alpha APIImagine having an intelligent assistant at your fingertips, capable of not only understanding your questions but also providing detailed computational insights. That's where Wolfram Alpha shines. It's more than just a search engine; it's a computational knowledge engine. Whether you need to solve a math problem, retrieve real-time data, or generate visual content, Wolfram Alpha has you covered. Its unique ability to compute answers based on structured data sets it apart from traditional search engines.So, how can you tap into this treasure trove of computational knowledge? Enter the Wolfram Alpha API. This API exposes Wolfram Alpha's capabilities for developers to harness in their applications. Whether you're building a chatbot, a data analysis tool, or an educational resource, the Wolfram Alpha API can provide you with instant access to accurate and in-depth information. The API supports a wide range of queries, from straightforward calculations to complex data retrievals, making it a versatile tool for various use cases.Integrating Wolfram Alpha API with ChatGPTChatGPT's strength lies in its ability to understand and generate human-like text based on input. However, when it comes to intricate calculations or pulling real-time data, it benefits from a partner like Wolfram Alpha. By integrating the two, you create a dynamic synergy where ChatGPT can effortlessly tap into Wolfram Alpha's computational engine to provide accurate and data-driven responses. This collaboration bridges the gap between language understanding and computation, resulting in a well-rounded AI interaction.Before we dive into the technical implementation, let's get you set up to take advantage of the Wolfram Alpha plugin for ChatGPT. First, ensure you have access to ChatGPT+. To enable the Wolfram plugin, follow these steps:Open the ChatGPT interface.Navigate to "Settings."Look for the "Beta Features" section.Enable "Plugins" under the GPT-4 options.Once "Plugins" is enabled, locate and activate the Wolfram plugin.With the plugin enabled you're ready to harness the combined capabilities of ChatGPT and Wolfram Alpha API, making your AI interactions more robust and informative.In the next sections, we'll dive into practical applications and walk you through implementing the integration using Python and ChatGPT.Practical Applications with Code ExamplesLet's start by exploring how the Wolfram Alpha API can assist with complex mathematical tasks. Below are code examples that demonstrate the integration between ChatGPT and Wolfram Alpha to solve intricate math problems. In these scenarios, ChatGPT serves as the bridge between you and Wolfram Alpha, seamlessly delivering accurate solutions.Before diving into the code implementation, let's ensure your environment is ready to go. Follow these steps to set up the necessary components:Install the required packages: Make sure you have the necessary Python packages installed. You can use pip to install them:pip install langchain openai wolframalphaNow, let's walk through implementing the code example you provided earlier. This code integrates the Wolfram Alpha API with ChatGPT to provide accurate and informative responses:Wolfram Alpha can solve simple arithmetic queries:# User input question = "Solve for x: 2x + 5 = 15" # Let ChatGPT interact with Wolfram Alpha response = agent_chain.run(input=question) # Extracting and displaying the result from the response result = response['text'] print("Solution:", result)Or mode complex ones like calculating integrals:# User input question = "Calculate the integral of x^2 from 0 to 5" # Let ChatGPT interact with Wolfram Alpha response = agent_chain.run(input=question) # Extracting and displaying the result from the response print("Integral:", response) Real-time Data RetrievalIncorporating real-time data into conversations can greatly enhance the value of AI interactions. Here are code examples showcasing how to retrieve up-to-date information using the Serper API and integrate it seamlessly into the conversation:# User input question = "What's the current exchange rate between USD and EUR?" # Let ChatGPT interact with Wolfram Alpha response = agent_chain.run(input=question) # Extracting and displaying the result from the response print("Exchange Rate:", response)We can also ask for the current weather forecast:# User input question = "What's the weather forecast for London tomorrow?" # Let ChatGPT interact with Wolfram Alpha response = agent_chain.run(input=question) # Extracting and displaying the result from the response print("Weather Forecast:", response)Now we can put everything together into a single block including all the required library imports and use both real time data with Serper and use the reasoning skills of Wolfram Alpha.# Import required libraries from langchain.agents import load_tools, initialize_agent from langchain.llms import OpenAI from langchain.memory import ConversationBufferMemory from langchain.chat_models import ChatOpenAI # Set environment variables import os os.environ['OPENAI_API_KEY'] = 'your-key' os.environ['WOLFRAM_ALPHA_APPID'] = 'your-key' os.environ["SERPER_API_KEY"] = 'your-key' # Initialize the ChatGPT model llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo") # Load tools and set up memory tools = load_tools(["google-serper", "wolfram-alpha"], llm=llm) memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True) # Initialize the agent agent_chain = initialize_agent(tools, llm, handle_parsing_errors=True, verbose=True, memory=memory) # Interact with the agent response_weather = agent_chain.run(input="what is the weather in Amsterdam right now in celcius? Don't make assumptions.") response_flight = agent_chain.run(input="What's a good price for a flight from JFK to AMS this weekend? Express the price in Euros. Don't make assumptions.")ConclusionIn this tutorial, we've delved into the exciting realm of integrating the Wolfram Alpha API with Python and ChatGPT. We've explored how this collaboration empowers you to tackle complex mathematical tasks and retrieve real-time data seamlessly. By harnessing the capabilities of both Wolfram Alpha and ChatGPT, you've unlocked a powerful synergy that's capable of transforming your AI interactions. As you continue to explore and experiment with this integration, you'll discover new ways to enhance your interactions and leverage the strengths of each tool. So, why wait? Start your journey toward more informative and engaging AI interactions today.Author BioAlan Bernardo Palacio is a data scientist and an engineer with vast experience in different engineering fields. His focus has been the development and application of state-of-the-art data products and algorithms in several industries. He has worked for companies such as Ernst and Young, Globant, and now holds a data engineer position at Ebiquity Media helping the company to create a scalable data pipeline. Alan graduated with a Mechanical Engineering degree from the National University of Tucuman in 2015, participated as the founder of startups, and later on earned a Master's degree from the faculty of Mathematics in the Autonomous University of Barcelona in 2017. Originally from Argentina, he now works and resides in the Netherlands.LinkedIn 
Read more
  • 0
  • 0
  • 35223

article-image-designing-decoder-only-transformer-models-like-chatgpt
Saeed Dehqan
28 Aug 2023
9 min read
Save for later

Designing Decoder-only Transformer Models like ChatGPT

Saeed Dehqan
28 Aug 2023
9 min read
IntroductionEmbark on an enlightening journey into the ChatGPT stack, a remarkable feat in AI-driven language generation. Unveiling its evolution from inception to a proficient AI assistant, we delve into decoder-only transformers, specialized for crafting Shakespearean verses and informative responses.Throughout this exploration, we dissect the four integral stages that constitute the ChatGPT stack. From exhaustive pretraining to fine-tuned supervised training, we unravel how rewards and reinforcement learning refine response generation to align with context and user intent.In this blog, we will get acquainted briefly with the ChatGPT stack and then implement a simple decoder-only transformer to train on Shakespeare.Creating ChatGPT models consists of four main stages:1.    Pretraining:2.    Supervised Fine Tuning3.    Reward modeling4.    Reinforcement learningThe Pretraining stage takes most of the computational time since we train the language model on trillions of tokens. The following table shows the Data Mixtures used for pretraining of LLaMA Meta Models [0]:The datasets come and mix together, according to the sampling proportion, to create the pretraining data. The table shows the datasets along with their corresponding sampling proportion (What portion of the pre-trained data is the dataset?), epochs (How many times do we train the model on the corresponding datasets?), and dataset size. It is obvious that the epoch of high-quality datasets such as Wikipedia, and Books is high and as a result, the model grasps high-quality datasets better.After we have our dataset ready, the next step is Tokenization before training. Tokenizing data means mapping all the text data into a large list of integers. In language modeling repositories, we usually have two dictionaries for mapping tokens (a token is a sub word. Like ‘wait’, and ‘ing’ are two tokens.) into integers and vice versa. Here is an example:In [1]: text = "it is obvious that the epoch of high .." In [2]: tokens = list(set(text.split())) In [3]: stoi = {s:i for i,s in enumerate(tokens)} In [4]: itos = {i:s for s,i in stoi.items()} In [5]: stoi['it'] Out[5]: 22 In [6]: itos[22] Out[6]: 'it'Now, we can tokenize texts with the following functions:In [7]: encode = lambda text: [stoi[x] for x in text.split()] In [8]: decode = lambda encoded: ' '.join([itos[x] for x in encoded]) In [9]: tokenized = encode(text) In [10]: tokenized Out[10]: [22, 19, 18, 5, ...] In [11]: decode(tokenized) Out[11]: 'it is obvious that the epoch of high ..'Suppose the tokenized variable contains all the tokens converted to integers (say 1 billion tokens). We select 3 chunks of the list randomly that each chunk contains 10 tokens and feed-forward them into a transformer language model to predict the next token. The model’s input has a shape (3, 10), here 3 is batch size and 5 is context length. The model tries to predict the next token for each chunk independently. We select 3 chunks and predict the next token for each chunk to speed up the training process. It is like running the model on 3 chunks of data at once. You can increase the batch size and context length depending on the requirements and resources. Here’s an example:For convenience, we wrote the token indices along with the corresponding tokens. For each chunk or sequence, the model predicts the whole sequence. Let’s see how this works:By seeing the first token (it), the model predicts the next token (is). The context token(s) is ‘it’ and the target token for the model is ‘is’. If the model fails to predict the target token, we do backpropagation to adjust model parameters so the model can predict correctly.During the process, we mask out or hide the future tokens so that the model can’t have access to the future tokens. Because it is kind of cheating. We want the model itself to predict the future by only seeing the past tokens. That makes sense, right? That’s why we used a gray background for future tokens, which means the model is not able to see them.After predicting the second token, we have two tokens [it, is] as context to predict what token comes next in the sequence. Here is the third token (obvious).By using the three previous tokens [it, is, obvious], the model needs to predict the fourth token (that). And as usual, we hide the future tokens (in this case ‘the’).We give [it, is, obvious, that] to the model as the context in order to predict ‘the’. And finally, we give all the sequence as context [it, is, obvious, that, the] to predict the next token.We have five predictions for a sequence with a length of five.After training the model on a lot of randomly selected sequences from the pre-trained dataset, the model should be ready to autocomplete your sequence. Give it a sequence of tokens, and then, it predicts the next token and based on what was predicted plus previous tokens, the model predicts the next tokens one by one. We call it an autoregressive model. That’s it.But, at this stage, the model is not an AI assistant or a chatbot. It only receives a sequence and tries to complete the sequence. That’s how we trained the model. We don’t train it to answer questions and listen to the instructions. We give it context tokens and the model tries to predict the next token based on the context.You give it this:“In order to be irrational, you first need to”And the model continues the sequence:“In order to be irrational, you first need to abandon logical reasoning and disregard factual evidence.”Sometimes, you ask it an instruction:“Write a function to count from 1 to 100.”And instead of trying to write a function, the model answers with more similar instructions:“Write a program to sort an array of integers in ascending order.”“Write a script to calculate the factorial of a given number.”“Write a method to validate a user's input and ensure it meets the specified criteria.”“Write a function to check if a string is a palindrome or not.”That’s where prompt engineering came in. People tried to use some tricks to get the answer to a question out of the model.Give the model the following prompt:“London is the capital of England.Copenhagen is the capital of Denmark.Oslo is the capital of”The model answers like this:“Norway.”So, we managed to get something helpful out of it with prompt engineering. But we don’t want to provide examples every time. We want to ask it a question and receive an answer. To prepare the model to be an AI assistant, we need further training named Supervised Fine Tuning for instructional purposes.In the Supervised Fine-Tuning stage, we make the model instructional. To achieve this goal the model needs training on a high quality 15k-100K of prompt and response dataset. Here’s an example of it: { "instruction": "When was the last flight of Concorde?", "context": "", "response": "On 26 November 2003", "category": "open_qa" }This example was taken from the databricks-dolly-15k dataset that is an open-source dataset for Supervised/Instruction Fine Tuning[1]. You can download the dataset from here. Instructions have seven categorizations including brainstorming, classification, closed QA, generation, information extraction, open QA, and summarization. This is because we want to train the model in different tasks. For instance, the above instruction is open QA, meaning the question is a general one and does not require reasoning abilities. It teaches the model to answer general questions. Closed QA requires reasoning abilities. During Instruction fine-tuning, nothing will change algorithmically. We do the same process as the previous stage (Pretraining). We gave instructions as context tokens and we want the model to continue the sequence with response.We continue this process for thousands of examples and then, the model is ready to be instructional. But that’s not the end of the story of the model behind ChatGPT. OpenAI designed a supervised reward modeling that returns a reward for the sequences that were made by the base model for the same input prompt. They give the model a prompt and run the model four times, for instance, to have four different answers for the same prompt. The model produces different answers each time because of the sampling method they use. Then, the reward model receives the input prompt and the produced answers to get a reward score for each answer. The better the answer, the better the reward score is. The model requires ground-truth scores to be trained and these scores came from labelers who worked for OpenAI. Labelers were given prompt text and model responses and they ranked them from the best to the worst.At the final stage, the ChatGPT uses Reinforcement Learning with Human Feedback (RLHF) to generate responses that get the best scores from the rewarding model. RL is an architecture that tries to find the best way of achieving a goal. The goal can be checkmate in chess or creating the best answer for the input prompt. The RL learning process is like doing an action and getting a reward or penalty for the action. And we do not take actions that end up penalizing. RLHF is what made ChatGPT so good:The PPO-ptx shows the win rate of GPT + RLHF compared to SFT (Supervised Fine-Tuned model), GPT with prompt engineering, and GPT base.ConclusionIn summation, the ChatGPT stack exemplifies AI's potent fusion with language generation. From inception to proficient AI assistant, we've traversed core stages – pretraining, fine-tuning, and reinforcement learning. Decoder-only transformers have enlivened Shakespearean text and insights.Tokenization's role in enabling ChatGPT's prowess concludes our journey. This AI evolution showcases technology's synergy with creative text generation.ChatGPT's ascent highlights AI's potential to emulate human-like language understanding. With ongoing refinement, the future promises versatile conversational AI that bridges artificial intelligence and language's artistry, fostering human-AI understanding.Author BioSaeed Dehqan trains language models from scratch. Currently, his work is centered around Language Models for text generation, and he possesses a strong understanding of the underlying concepts of neural networks. He is proficient in using optimizers such as genetic algorithms to fine-tune network hyperparameters and has experience with neural architecture search (NAS) by using reinforcement learning (RL). He implements models starting from data gathering to monitoring, and deployment on mobile, web, cloud, etc. 
Read more
  • 0
  • 0
  • 11874

article-image-chatgpt-for-everyday-use
M.T. White
22 Aug 2023
14 min read
Save for later

ChatGPT for Everyday Use

M.T. White
22 Aug 2023
14 min read
IntroductionChatGPT is a revolutionary new technology that is making a large impact on society.  The full impact of ChatGPT cannot be fully known at the time of writing this article because of how novel the technology is.  However, what can be said is that since its introduction many industries have been trying to leverage it and increase productivity.  Simultaneously, everyday people are trying to learn to leverage it as well.  Overall, ChatGPT and similar systems are very new and the full impact of how to leverage them will take some more time to fully manifest.  This article is going to explore how ChatGPT can be used for everyday life by exploring a few use cases.What is ChatGPT?       Before we begin, it is important to understand what ChatGPT is and what it isn’t.  To begin ChatGPT is in a lay sense a super advanced chatbot.  More specifically, ChatGPT is known as a generative AI that uses Natural Language Processing (NLP) to create a dialog between a user and itself.  ChatGPT and similar systems are what are known as Large Language Models (LLMs).  In short, for AI models to work they have to be trained using data.  To train LLMs engineers use vast amounts such as books, articles, journals, and so on.  The result is a system like ChatGPT that has a vast knowledge base on many different subjects.  Before we can explore how to use ChatGPT for everyday life we need to explore how NOT to use ChatGPT. How not to use ChatGPT?ChatGPT is very powerful and can be used for many different things; however, is important to understand that ChatGPT is not a sage nor infallible.  Remember ChatGPT only knows about what it was trained on.  This means if the information it was taught was wrong or outdated so too will be the response it provides.  This means that as of writing this article ChatGPT cannot and should not be used as a replacement for humans.  Even with the answer ChatGPT gives, a decent level of domain knowledge is still required properly format and use its response.  As such, it is important to take suggestions with a certain amount of skepticism.  The best way to think of ChatGPT is as an extremely smart friend with a wide range of knowledge.  Though that friend may be very knowledgeable they can and will be wrong from time to time.  With that how does one use ChatGPT?How to use ChatGPT for everyday life?Using ChatGPT starts with what is called a prompt.  A prompt can be thought of as a query that the user feeds into ChatGPT.  This prompt is kind of like a Google search.  It will be a statement that asks ChatGPT a question or to perform a certain task.  Since ChatGPT used NLP, the prompt does not have to be formatted a certain way nor does it require a specific syntax.  In other words, a prompt can be entered the same way a user would pose the instruction to another person.  However, it is good to provide ChatGPT will enough information to adequately describe the problem.  An example, of a prompt is as follows:How can ChatGPT be used for everyday life?Once the prompt is run ChatGPT will produce text with suggestions, answers, programming software, or whatever was asked for.  That output that is produced is called a response which will have the answer to the request/question. There are a lot of ways ChatGPT can be used for everyday life.  In terms of professional life, ChatGPT can make an excellent assistant.  For most “text-based” jobs, that is jobs that don’t require design such as drawing diagrams, ChatGPT can be an excellent assistant.  For example, suppose a programmer needs a small piece of software for a project, assume they need a SQL query that can pull all the rows between two dates.  The user could use a prompt like the following:Write a SQL query that will pull all rows between January 3 and March 31.This prompt will produce the following response:To pull all rows between January 3 and March 31 from a table, you'll need to use the WHERE clause to filter the results based on the date column. Assuming you have a date column named "date_column" in your table, here's the SQL query: sqlCopy code SELECT * FROM your_table WHERE date_column >= '2023-01-03' AND date_column <= '2023-03-31'; Replace "your_table" with the actual name of your table, and "date_column" with the name of the column that contains the dates you want to filter. The query will select all rows where the "date_column" is on or after January 3, 2023, and on or before March 31, 2023.For those that are not familiar with SQL, the prompt produced a simple query with generic placeholders that will pull the correct data out of a database. Not everyone is a programmer, so how could a non-programmer use ChatGPT as an assistant?  One area in which ChatGPT can be used is by composing emails.  Suppose a salesperson needs to inform Tom, their boss, that a $1 million deal was closed today via email.  They could use a prompt like the following:Write Tom an email saying that the deal with Company X went through, and we made $1 million.The response would be something along the lines of:Subject: Successful Deal with Company X - $1 Million Revenue Achieved Hi Tom, I hope this email finds you well. I am thrilled to share some exciting news with you! The deal with Company X has successfully gone through, and I am delighted to inform you that we have made an astounding $1 million in revenue from this collaboration. This achievement wouldn't have been possible without the hard work and dedication of our entire team. It reflects the trust and confidence our partners have in our capabilities, and I believe it marks a significant milestone for our company's growth and success. I want to express my gratitude to you for your valuable contributions and expertise that played a crucial role in making this deal a reality. Your efforts have been commendable, and I am truly grateful for your commitment to the success of this venture. Let's take a moment to celebrate this triumph together. Your exceptional skills and commitment to excellence have made this accomplishment possible, and I am genuinely proud to have you as part of our team. Looking forward to even more prosperous ventures in the future. Once again, congratulations to you and the entire team! Best regards, [Your Name] [Your Title/Position] [Company Name] [Email] [Phone Number]In this case, all the users would have to do is proofread the email, copy it, and send it.  Now, for applications such as this proofreading is very important.  As stated before, ChatGPT is not a mind reader nor a sage, as such it may produce emails with wrong information, illogical wording, or anything else.  So, it’ll pay to read the message before sending it. Learning ToolA very powerful use of ChatGPT is as a learning tool.  For example, students can use this tool to help them master a new subject, generate practice problems, and even check answers to an extent.  Assume the user needs a few extra practice problems for their English homework, they could enter a prompt like the following:Generate some grammar practice problems for a 1st year English classWhich would yield the following output:Of course! Here are some grammar practice problems suitable for a 1st-year English class: 1. Subject-Verb Agreement: Choose the correct verb form that agrees with the subject in each sentence: a) The cat (purr/purrs) when it is happy. b) My friend and I (is/are) going to the movies tonight. c) Neither the students nor the teacher (understands/understand) the assignment. 2. Pronoun Usage: Select the appropriate pronoun to complete each sentence: a) She invited Sarah and (I/me) to the party. b) My sister and (her/she) are going shopping. c) The book is for (he/him) and his brother. 3. Articles (a/an/the): Insert the correct article (a, an, the, or no article) in each sentence: a) Can you pass me (a/an) apple, please? b) I need to buy (the) new shoes for the dance. c) My friend has (no article) car. 4. Prepositions: Choose the correct preposition to complete each sentence: a) We arrived (in/on/at) the airport fifteen minutes early. b) The cat is sleeping (under/below/above) the table. c) She's going to the store (by/with/for) her mom. 5. Verb Tenses: Identify the correct verb tense used in each sentence: a) They (will be/was) studying for the exam all night. b) By the time we arrived, the party (had started/has started). c) I (am/was) watching a movie right now. 6. Adjective vs. Adverb: Decide whether the word in parentheses should be an adjective or adverb in the sentence: a) She sings (beautiful/beautifully). b) The (happy/happily) children played in the park. c) The (quick/quickly) fox jumped over the fence. 7. Negation: Add the necessary negative word to each sentence: a) I have (no/not) seen him today. b) She does (not/none) like coffee. c) We will (not/none) be attending the party. 8. Passive Voice: Rewrite the following sentences in the passive voice: a) The chef cooked the meal. b) The teacher is explaining the lesson. c) The storm destroyed the old building. 9. Comparative and Superlative Forms: Complete each sentence with the correct comparative or superlative form of the adjective: a) This book is (interesting/more interesting/most interesting) than the last one. b) She is (tall/taller/tallest) than her sister. c) It was the (big/biggest/bigger) cake at the party. 10. Reported Speech: Rewrite the following sentences using reported speech: a) Mary said, "I am going to the store." b) "I will call you later," said John. c) "They have arrived," she said. These grammar practice problems aim to reinforce essential grammar rules and concepts, helping 1st-year English students develop their language skills and proficiency.As can be seen, ChatGPT generated a number of questions that one would usually find in an English 101 class.  Now, if the user wanted a more specific answer that could reword the prompt to accommodate. ChatGPT is also a great teaching tool as well.  Teachers can also use this tool to generate lesson plans, write intros for learning modules, generate problems, and more.  Overall, ChatGPT can be used as an excellent tool for academia in general.Now, it is important to remember that ChatGPT is not all-knowing.  It can only generate responses based on the data that it was trained on.  This means if the user is asking questions about a subject where there is little or no publicly available data the response probably isn’t going to be of the highest quality.  For example, if someone askedHow do I build a working time machine?They’re going to get the following:Building a working time machine, as depicted in science fiction, is currently beyond our technological capabilities and goes against the known laws of physics. Time travel, as popularly imagined, involves traveling backward or forward in time, similar to how we move through space. As of my last update in September 2021, time travel remains a concept explored mainly in theoretical physics, and no practical time machine has been built or proven to be possible. Several theories, such as the theory of relativity, suggest that time travel could be theoretically feasible under certain conditions, but these ideas are still purely theoretical and have not been put into practice. It's important to remember that building a time machine would present enormous scientific, technological, and ethical challenges. It could raise paradoxes, such as the "grandfather paradox," where a time traveler could potentially alter past events and create inconsistencies in history. As of now, time travel remains a fascinating topic in science fiction and theoretical physics, but it is not something that can be practically accomplished with our current understanding and technology. The scientific community continues to explore the nature of time and the universe, but building a working time machine as portrayed in movies and books is not yet a reality.ChatGPT gave some general information on time travel but unfortunately, it didn’t generate any schematics.  Again, this goes back to ChatGPT not being a sage as it only knows what it was “taught”.  Since there is no data on how to build a working time machine ChatGPT could not fully answer the prompt. Now, If one looks at the English question prompt above, one will notice that practice questions were quite broad.  It is common to have to “dig” with ChatGPT.  In other words, a person may have to refine the queriers to get what they need.  To get some practice try re-wording the prompt to generate practice questions for only passive writing.  SummaryChatGPT is a tool, and like any other tool, what it’s used for is up to the user.  As was seen in this article, ChatGPT is an excellent tool for helping a person through their day by generating software, emails, and so on.  ChatGPT can also be used as a great learning or teaching device to help students and teachers generate practice problems, create lesson plans, and so much more.  However, as was stated so many numerous times.  Unless ChatGPT has been trained on something it does not know about it.  This means that asking it things like how to build a time machine or domain specific concepts aren’t going to return quality responses.  Also, even if ChatGPT has been trained on the prompt, it may not always generate a quality response.  No matter the use case, the response should be vetted for accuracy.  This may mean doing a little extra research with the response given, testing the output, or whatever needs to be done to verify the response. Overall, ChatGPT at the time of writing this article is less than a year old.  This means that the full implication of using ChatGPT are not fully understood.  Also, how to fully leverage ChatGPT is not understood yet either.  What can be said is that ChatGPT and similar LLM systems will probably be the next Google.  In terms of everyday use, the only true inhibitors are the user's imagination and the data that was used to train ChatGPT.Author BioM.T. White has been programming since the age of 12. His fascination with robotics flourished when he was a child programming microcontrollers such as Arduino. M.T. currently holds an undergraduate degree in mathematics, and a master's degree in software engineering, and is currently working on an MBA in IT project management. M.T. is currently working as a software developer for a major US defense contractor and is an adjunct CIS instructor at ECPI University. His background mostly stems from the automation industry where he programmed PLCs and HMIs for many different types of applications. M.T. has programmed many different brands of PLCs over the years and has developed HMIs using many different tools.Author of the book: Mastering PLC Programming
Read more
  • 0
  • 0
  • 16351
article-image-chatgpt-and-azure-low-code-machine-learning
M.T. White
22 Aug 2023
12 min read
Save for later

ChatGPT and Azure Low Code Machine Learning

M.T. White
22 Aug 2023
12 min read
IntroductionChatGPT can do many amazing things. ChatGPT can easily troubleshoot code, it can generate source code, and much more.  However, software development and by extension data engineering is comprised of so much more than just text-based programming.  For example, Azure offers a low/no-code tool that can be used to generate machine learning models without having to spend countless hours writing millions of lines of code.  However, there is a caveat to this service; in short, a person has to know what they are doing to use it.  For many building a machine-learning system is a complex task.  This is where ChatGPT comes into play.  ChatGPT can easily guide a user into building the pipeline needed to meet their goals.  What is especially interesting about this notion is that we can use AI to help build other AI!  To demonstrate this we’re going to use ChatGPT as a guiding tool to build our own linear regression model in Azure. ExpectationsAt the time of writing this article, ChatGPT cannot produce actual diagrams; however, what it can do is guide you. This means that you still have to be familiar with the overall gist of technology, but you don’t have to be a data science expert to figure out how to make a model from scratch.  ChatGPT is an excellent tool to get you up and running quickly, but as stated in many other articles throughout the internet, ChatGPT is not a replacement for developers.  On a side note, this tutorial is meant to be interactive.  ChatGPT will only generate a series of steps that must be interpreted. This means that if you don’t know how to carry out a task there are a lot of opportunities to create your own prompts.  With that, let’s start!SetupThis tutorial is going to assume that you have a basic knowledge of Azure and the Azure machine learning services.  However, we’re going to use ChatGPT as a guide from start to finish, so if you’re not sure of what you’re doing you can always modify the prompts or create new ones to help you along.  As an exercise, if you do get stuck it is a good idea to try to write some prompts on your own to get a feel for ChatGPT.  With that let’s start by having ChatGPT guide us in creating the necessary environment for our machine learning pipeline.EnvironmentTo begin, let’s start with getting our environment set up.  To figure out how to do this let’s use the following prompt:What infrastructure will I need to build a no-code Azure machine learning pipeline?Once you run this prompt you should be met with something akin to the following:To build a no-code Azure Machine Learning pipeline, you will need the following infrastructure components: 1.     Azure Subscription: You need an active Azure subscription to access and utilize Azure Machine Learning services. 2.     Azure Machine Learning Workspace: Create an Azure Machine Learning workspace, which serves as the top-level resource for organizing and managing your machine learning assets. The workspace provides a centralized location to store your pipelines, datasets, models, and other resources. 3.     Compute Resources: Azure Machine Learning provides various compute options for running your pipeline. Depending on your workload and requirements, you can choose from options such as Azure Machine Learning Compute, Azure Databricks, or remote VMs. These resources will execute the pipeline steps and perform the required computations. 4.     Data Storage: Azure Machine Learning supports multiple data storage options, such as Azure Blob Storage, Azure Data Lake Storage, or Azure SQL Database. You need a suitable data storage solution to store your input datasets, intermediate data, and any other data required for your pipeline. 5.     Networking and Security: Ensure that your Azure subscription and associated resources are properly secured. Azure provides various security features, such as Virtual Network (VNet) integration, network security groups (NSGs), role-based access control (RBAC), and Azure Active Directory (AAD) authentication, to protect your resources and control access. 6.     Monitoring and Logging: Azure Machine Learning offers monitoring and logging capabilities to track the execution of your pipelines, monitor performance metrics, and troubleshoot issues. You can use Azure Monitor, Azure Log Analytics, or other monitoring tools to gain insights into pipeline performance and health. 7.     Integration with DevOps: If you have a DevOps workflow, you may want to integrate your no-code pipeline with your existing CI/CD processes. Azure Machine Learning can be integrated with Azure DevOps, GitHub Actions, or other tools to automate the deployment and management of your pipelines. Remember to evaluate your specific workload requirements and choose the appropriate infrastructure components accordingly. The exact infrastructure setup will vary depending on factors such as data size, computational needs, security requirements, and integration with existing systems.This prompt generated a lot of needed infrastructure components that are necessary for a production-level pipeline.  However, our pipeline will only be used for practice so all we need to do is follow steps 1-3.  In other words, all we need for this tutorial is an Azure instance, an Azure Machine Learning workspace, and a compute instance.  If you can create these by yourself do so; however, if you can’t try writing your own prompt.  For example, try engineering a prompt that can give you the steps necessary to set up a compute instance.  You could try something like the following:How do I set up a compute instance in Azure?If this prompt doesn’t provide you with the necessary information, try rewording it and giving it more details until you can do it with the provided steps. PipelineThe next step is building out the pipeline.  The pipeline is the logic for the model.  In other words, the pipeline is the algorithm that will load the data for the model, clean the data, train the model, and evaluate the model if necessary.  In short, the best way to think of the pipeline is as a graphical machine learning program.  As stated before, ChatGPT is mostly limited to text-based responses.  However, we can still get step-by-step directions with the following prompt:Build a minimal linear regression model using Azure Machine Learning StudioWhich will output the following response:As an AI language model, I don't have direct access to external tools or platforms like Azure Machine Learning Studio, and my capabilities are limited to providing instructions and guidance. However, I can walk you through the steps to build a minimal linear regression model using Azure Machine Learning Studio. Please note that the steps might slightly vary based on updates to the platform since my last update in September 2021. Make sure to check the official Azure Machine Learning documentation for any changes. Here's a general outline of the steps: 1.     Set up Azure Machine Learning Studio: If you don't have an Azure Machine Learning account, sign up for one. Once you have access to Azure Machine Learning Studio, create a new project or workspace. 2.     Create a new Experiment: In Azure Machine Learning Studio, create a new experiment by clicking on "Experiments" and then "New." Give your experiment a descriptive name. 3.     Data Ingestion: Upload your dataset to Azure Machine Learning Studio. You can do this by clicking on "Datasets" and then "New" to upload your dataset. 4.     Data Cleaning and Preparation: Prepare your data by cleaning and transforming it if needed. This might include removing missing values, encoding categorical variables, and splitting the data into training and testing sets. 5.     Add Linear Regression Module: Drag and drop the "Linear Regression" module from the left panel to the canvas in your experiment. 6.     Connect Data to the Model: Connect the dataset you uploaded earlier to the "Linear Regression" module by clicking and dragging from the dataset to the input of the linear regression module. 7.     Train the Model: Run the experiment to train the linear regression model on your dataset. 8.     Evaluate the Model: After the training is complete, you can use evaluation modules like "Score Model" and "Evaluate Model" to assess the performance of the trained linear regression model. 9.     Deploy the Model (Optional): If you want to use the trained model for predictions in real-world scenarios, you can deploy the model as a web service in Azure Machine Learning Studio. 10. Test the Deployed Model (Optional): Test the deployed model to ensure it is working correctly and providing accurate predictions. Remember, this is just a minimal example of building a linear regression model using Azure Machine Learning Studio. Depending on your dataset and specific use case, you may need to perform additional steps like feature engineering, hyperparameter tuning, and more thorough model evaluation. Always refer to the official documentation and resources from Azure Machine Learning Studio for the most up-to-date and detailed instructions.Analyzing the output, the first two steps are self-explanatory.  The third step will require some preparation since we’re going to use a custom dataset for this tutorial. This tutorial is going to use a dataset that consists of 14 points.  Normally, you’ll want to have a dataset of at least 30 points to ensure normal distribution; however, for this example, we’re going to assume the data has a normal distribution.  With that, to train the model for this tutorial, copy the following data into either a plain text file or an Excel spreadsheet and save it as a .csv file:Once you have the data saved, you’ll need to create a data asset and upload the file to Azure.  If you don’t know the steps to upload the dataset you should try writing another prompt for directions.  If you need more information on this step you could try a prompt like:How do I upload a custom dataset to Azure Machine Learning Studio?Moving on to the rest of the instructions, we can construct a pipeline that resembles the pipeline in Figure 1:Figure 1 – Completed PipelineThis pipeline is, for the most part, a one-to-one representation of the instructions.  However, this pipeline expanded in Step 4.  In this pipeline, we added a Select Columns in the Dataset module to ensure we are only including the necessary data for the model.  From there we ran that data to a Split Data component as was suggested by ChatGPT.  Other than that, the model is exactly as described with the exception of the last two steps which are for deployment and testing; that is, the two steps that were labeled as “optional” by ChatGPT. For this tutorial build the model as is seen in Figure 1 and run it.  After you run the pipeline, you can see how well the model performed. To see the statistics, you can click the Evaluate Model component to see the statistics for the model.  There is a lot of information that can be unpacked, but you can see the scores by navigating to the metrics tab.  If you used the same dataset, your numbers should be around the values that are in Figure 2.Figure 2 – Linear Regression OutputsAt this point, ChatGPT has guided us in building a linear regression model.  Overall, the linear regression model that ChatGPT guided us to build is a very simple model that, all things considered, is fairly accurate. SummaryThis tutorial has been a crash course on how ChatGPT can be used to build no-code solutions in Azure Machine Learning Studios.  What’s incredible about this tutorial is that we used AI to help build another AI system.  However, as was seen in the tutorial, ChatGPT was only a guide.  For graphical systems, ChatGPT, at best, can be used as a guide.  This means that for systems like Azure Machine Learning Studio, a basic understanding of using the system is required.  As such, this means that for graphical systems ChatGPT is best utilized by persons that are knowledgeable of the system but need guidance for the task at hand.  For example, if this were a real project the ideal engineer would be a person that knows how to use Azure Machine Learning Studio but needs help with creating the pipeline logic. In terms of graphical-based programming, ChatGPT is almost a little ironic.  For example, when it comes to text-based programming in Java, Python, or whatever other language ChatGPT can be used to generate working code.  However, due to the current limitation of ChatGPT not being able to generate graphical programs for systems like Azure Machine Learning Studio a person will require a more in-depth knowledge of the system.  As ChatGPT matures this may change but for now, it is best to still have a knowledgeable engineer driving ChatGPT and implementing its solutions.  Overall, ChatGPT is an excellent assistant but will require a person that is knowledgeable of the technology being used. Author BioM.T. White has been programming since the age of 12. His fascination with robotics flourished when he was a child programming microcontrollers such as Arduino. M.T. currently holds an undergraduate degree in mathematics, and a master's degree in software engineering, and is currently working on an MBA in IT project management. M.T. is currently working as a software developer for a major US defense contractor and is an adjunct CIS instructor at ECPI University. His background mostly stems from the automation industry where he programmed PLCs and HMIs for many different types of applications. M.T. has programmed many different brands of PLCs over the years and has developed HMIs using many different tools.Author of the book: Mastering PLC Programming 
Read more
  • 0
  • 0
  • 7904

article-image-chatgpt-as-a-debugging-tool
M.T. White
22 Aug 2023
14 min read
Save for later

ChatGPT as a Debugging Tool

M.T. White
22 Aug 2023
14 min read
IntroductionNo matter the technology or application debugging is a major part of software development.  Every developer who has ever written a program of any significant size knows that the application is going to have some kind of defect in it and probably won’t build the first few times it is run.  In short, a vast amount of time and energy is spent debugging software.  In many cases, debugging code can be more challenging than writing the code in the first place.  With the advent of systems like ChatGPT, spending hours debugging a piece of code may be a thing of the past, at least for relatively small code blocks.  This tutorial is going to explore prompts that we can use to have ChatGPT troubleshoot defective code for us.   ExpectationsBefore we can explore troubleshooting with ChatGPT, we need to first set some realistic expectations.  To begin, ChatGPT works off a series of inputs known as prompts.  For ChatGPT to fix a code block, you’ll first have to submit the code and the issue as a prompt.  At first glance, this may not seem like a big deal; however, modern applications are conglomerates of many smaller components that rely on each other to function correctly.  On top of that, many of these “smaller” components may be, and usually are, composed of hundreds, if not thousands of lines of code or more.  This means that a defect may not stem from the current code block but from a service or line of code, some were no one may consider.  As such, if the root of the defect is not inputted into the prompt, ChatGPT may not be of much use.  This means that to properly use ChatGPT as a troubleshooting tool, it is important to at least have a clue as to where the offending code is; this is because pasting in thousands, if not millions, of lines of code, is impractical.  Ultimately, ChatGPT, at least the web version, cannot be used as a troubleshooting tool without a person who is knowledgeable in both the codebase, debugging, and coding guiding it.   With that, let’s start troubleshooting!Troubleshooting with ChatGPTBefore we begin troubleshooting, let’s define the bugs we’re going to look at in this example.  Though there are many different types of software defects, this tutorial is going to use ChatGPT to troubleshoot compilation and logical errors as examples.  As such, we’re going to define these two terms with the following:Compilation Error: Any error that will prevent the source code from compiling.Logic Error: A software defect that gives an unanticipated result. For these examples, we’re going to use C and Python as the programming languages.  However, due to the nature of ChatGPT, the prompts can be modified to accommodate other languages.  We’re also going to assume that the program can fit in a single file; that is, we’re going to have ChatGPT analyze code snippets.  For now, let’s start by exploring some compilation errors!Compilation ErrorTo begin with, let’s take a look at a very simple Hello World program in C.  Consider the following code,#include <stdio.h> int main(){     printf("Hello World") }If you look at the code, you will see that there is a missing semicolon on the print line.  This is an obvious issue that the compiler will pick up, but for grins, let’s see what ChatGPT has to say.  For this example, we’re going to use the following prompt:Why will this C code not compile? #include <stdio.h> int main(){ printf("Hello World") }This prompt will output the following response:The C code you provided will not compile because there is a missing semicolon (;) at the end of the printf statement in the main function. Here's the corrected code: #include <stdio.h> int main() {    printf("Hello World");    return 0; } In C, semicolons are used to terminate statements, including function calls like printf(). The absence of a semicolon after printf("Hello World") causes a compilation error. Adding the semicolon at the end resolves this issue. As can be seen, ChatGPT instantly caught the error.  Now, this is a very simple error that basic tools such as the compiler would normally catch. Now, let’s explore how ChatGPT can troubleshoot a program in Python.  As many developers know, Python has a unique syntax compared to C and other C-like languages such as C++, C#, or Java.  Instead of using curly braces, Python uses indentation to denote hierarchy which can oftentimes lead to problems that are hard to diagnose, especially for the inexperienced.  As such, consider the following code block:some_number = 2 if some_number <= 2: print("some number is less than 2")An experienced Python developer would probably catch this issue quickly.  However, for this example, we’re going to let ChatGPT troubleshoot the code.  For this code block, we’re going to use the following prompt:What is the syntax error with this Python code block?some_number = 2if some_number <= 2:print("some number is less than 2")This prompt will output the following response:The syntax error in the given Python code block is that the print statement is not indented properly. In Python, indentation is crucial to define the structure and hierarchy of code blocks. Here's the corrected version: some_number = 2 if some_number <= 2:    print("some number is less than or equal to 2") In this corrected code, the print statement is indented with four spaces (or a tab) to align it with the if statement. This ensures that it is part of the code block executed when the condition is true.In this output, ChatGPT gave us the correct syntax as well as an explanation of the problem and solution.  Similar to the C code, these are problems that are usually picked up by the IDE or the compilation system.  However, it is not that uncommon to have to make code modifications in a plain text editor or to get tracebacks that aren’t very useful.  In these cases, ChatGPT could be an awesome tool to use to quickly fix issues.  Now that we’ve explored compilation issues let’s take a look at logical errors.Logical ErrorsLogical errors are oftentimes the hardest to troubleshoot, and many stem from very simple errors, such as using the wrong variable in a control statement, using the wrong math equation, or anything of the sort.  Often these are the hardest issues to troubleshoot because unless they are an oversight, the developer will think their logic is sound.  As such, let’s explore how ChatGPT can be used to clarify a developer’s logic.  Consider the following C code:#include <stdio.h> int main(){     int a = 2;     int b = 3; if (b > a){          printf("b < a");     }else{          printf("a > b");     }     return 0; }The purpose of this code is to show which value is greater, a or b.  However, when the code is run with the current values, it will return the following output:Figure 1 – C Program OutputObviously, there is a logic error in the code.  To troubleshoot it, let’s use the following prompt in ChatGPT:This code is producing the wrong results, it is saying that b is less than a when the inverse is true.  What is wrong with this code #include <stdio.h>int main(){            int a = 2;            int b = 3;            if (b > a){                        printf("b < a");            }else{                        printf("a > b");            }            return 0;}When the prompt is executed, it will return the following:The issue with the given C code is the incorrect comparison operator in the printf statements. The condition inside the if statement checks if b is greater than a, but the printf statements incorrectly state the opposite. To fix this, you need to update the printf statements to reflect the correct condition. Here's the corrected code: #include <stdio.h> int main() {    int a = 2;    int b = 3;    if (b > a) {        printf("b > a");    } else {        printf("a >= b");    }    return 0; } Now the code will output "b > a" when b is indeed greater than a, and "a >= b" otherwise.Again, ChatGPT gave a very clear and concise diagnosis and solution.  In short, the conditional statement in the if statement was wrong.  Now, let’s look at a snippet in Python. Consider the following code:def testFunction():    sum = 0    for i in range(10):        sum += i        print(i)    testFunction()In short, if you tried to run this code, nothing would happen. A Python developer would probably catch this error quickly, but let’s see what ChatGPT has to say. To start, let's use the following prompt:This function will not executedef testFunction():sum = 0 for i in range(10):sum += i print(i)testFunction()After running this prompt, you should get something akin to the following:The Python function you provided has a recursive call to itself (testFunction()) within its own body. This recursive call causes an infinite recursion, which results in a "RecursionError: maximum recursion depth exceeded" error. If you intended to have a recursive function, you should define the base case that stops the recursion. However, in this case, it seems like you want to call the testFunction() only once, without recursion. To fix the code, you can remove the testFunction() call from within the function body. Here's the corrected version: def testFunction():    sum = 0    for i in range(10):        sum += i        print(i)  testFunction() Now the function will execute correctly, iterating through the numbers 0 to 9 and printing each number on a separate line, without causing any recursion errors.This time the diagnosis isn’t as clear because there are a couple of errors that could be the issue. The first is that ChatGPT thinks this might be a recursive function, in which case, ChatGPT suggests putting in an exit for the function. However, if you read the output a little closer, it suggests that the developer is trying to call the function. In this case, it says that the function call is embedded in the function itself and provides the correct working code. As such, it diagnosed and troubleshot the code.Key TakeawaysChatGPT is an excellent way to troubleshoot code. It should be noted that the code in this tutorial was relatively simple and short.  With that, ChatGPT is excellent at troubleshooting small snippets, for example, methods or maybe even whole classes. However, for extremely complex problems, that is, problems that require many lines of code to be examined, ChatGPT may not be the optimal tool because all those lines have to be inputted into the prompt. Considering the problem, ChatGPT may get confused with the code, and complex prompts may have to be engineered to find the problem. However, if you have a rough idea of where the defect originates from, like which class file, it may be worthwhile to run the code through ChatGPT. If nothing else, it probably will give you a fresh perspective and, at the very least, point you in the right direction. The key to using ChatGPT as a troubleshooting tool is giving it the proper information. As we saw with the compilation and logic errors, a compilation error only needed the source code; however, that prompt could have been optimized with a description of the problem. On the other hand, to get the most out of logic errors, you’re going to want to include the following at a minimum:  The programming language  The code (At least the suspected offending code)   A description of the problem   Any other relevant informationSo far, the more information you provide to ChatGPT, the better the results are, but as we saw, a short description of the problem took care of the logic errors. Now, you could get away without specifying the problem, but when it comes to logical errors, it is wise to at least give a short description of the problem. ChatGPT is not infallible, and as we saw with the Python function, ChatGPT wasn’t too sure if the function was meant to be recursive or not. This means, much like a human, it needs to know as much about the problem as it can to accurately diagnose it.SummaryIn all, ChatGPT is a great tool for troubleshooting code. This tool would be ideal for compilation errors when tracebacks are not useful or not available. In terms of it being a tool for troubleshooting logical errors, ChatGPT can also be very useful. However, more information will be required for ChatGPT to accurately diagnose the problems. Again, the examples in this tutorial are very simple and straightforward. The goal was to simply demonstrate what kind of prompts can be used and the results of those inputs.  However, as was seen with the Python function, a complex code block can and probably will confuse the AI. This means that as a user, you have to provide as detailed information as you can to ChatGPT. It is also important to remember that no matter how you use the system, you will still need to use critical thinking and detective work yourself to hunt down the problem. ChatGPT is by no means a replacement for human developers, at least not yet. This means it is important to think of ChatGPT as another set of eyes on a problem and not a one-stop solution for a problem.  Author BioM.T. White has been programming since the age of 12. His fascination with robotics flourished when he was a child programming microcontrollers such as Arduino. M.T. currently holds an undergraduate degree in mathematics, and a master's degree in software engineering, and is currently working on an MBA in IT project management. M.T. is currently working as a software developer for a major US defense contractor and is an adjunct CIS instructor at ECPI University. His background mostly stems from the automation industry where he programmed PLCs and HMIs for many different types of applications. M.T. has programmed many different brands of PLCs over the years and has developed HMIs using many different tools.Author of the book: Mastering PLC Programming  
Read more
  • 0
  • 0
  • 19911

article-image-chatgpt-as-a-documentation-tool
M.T. White
22 Aug 2023
14 min read
Save for later

ChatGPT as a Documentation Tool

M.T. White
22 Aug 2023
14 min read
It comes as no surprise that most developers do not like writing documentation.  As a result, documentation is often pushed to the side and, more often than not, haphazardly put together.  This is a serious problem since written documentation is the primary way developers communicate how a software system should work and be utilized.  As such, a poorly documented system can render it useless and confine it to the cyber trash heap long before its time.  However, with the rise of new tools like ChatGPT, poor documentation may no longer be a problem.  This article is going to explore how ChatGPT can be leveraged as a code documentation tool and examine the results to see just how well it can document code.What is quality documentation?If you ask five developers what they consider to be good documentation, you’re probably going to get five different answers.  What’s considered good documentation will vary among languages, IDEs, organizational coding standards, and preferences.  As such, for this article, “good” documentation is going to have the following parameters:1.     The documentation will provide context on how a block of code works or how to utilize it. 2.     The documentation will be logical and consistent.  This means that the documentation will be formatted and worded logically to provide context across all code blocks that ChatGPT documents.3.     The autogenerated code documentation will not clutter the code or distract the reader from the task at hand.Again, it is important to remember that there are many different opinions on what quality documentation looks like, and the points above are just high-level metrics to hit.    What is the documentation?Documentation is a very broad term that can mean a lot of things.  It can mean simply the documentation that comes packaged with the codebases like JavaDocs, or it could be a whole ecosystem that ranges from low-level code comments to YouTube videos and Wikipedia articles.  In short, documentation can be anything that helps relay information from one developer to another.  As such, for this article, the term documentation is going to be limited to code comments and high-level documentation like JavaDocs.  Also, most languages have their own best practices for documentation, so for this article, ChatGPT will generate documentation for Java.  Though Java will be the example language, there should only be minor tweaks, if any, to generate documentation for any other language. JavaDocsJavaDocs should provide high-level documentation to relay information about how to use a piece of code to a developer that does not have access to the codebase.  This means that key features like what the methods do, arguments, and return types should be noted.  With that in mind, let’s generate some JavaDocs for the following method,public static void add(int a, int b) {      System.out.println(a + b); }We’re going to generate the JavaDocs for this method using the following prompt:Generate some javadocs for this method public static void add(int a, int b) { System.out.println(a + b); }When the prompt is executed, it will produce the following output:/** * Calculates the sum of two integers and prints the result. * * @param a The first integer operand. * @param b The second integer operand. */ public static void add(int a, int b) {    System.out.println(a + b); }In this case, ChatGPT clearly defined what the arguments are, the datatypes of the arguments, and what the method is meant to do with straightforward prompts.  It is important to note that this method is straightforward, so the next thing to explore is a more complex method.The next method to try to automatically document will be the following:public static double divide(int a, int b) { double div = 0;      if (a > b) {            div = a / b ;      }else {            div = b / a;      }      return div; }For this method, the following prompt will be run. Write only JavaDocs for this method public static double divide(int a, int b) { double div = 0; if (a > b) { div = a / b ; }else { div = b / a; } return div; }After the prompt is run, we should be met with something similar to the following:/** * Calculates the division of two numbers. * * @param a The numerator. * @param b The denominator. * @return The division result. */These JavaDocs look very similar to the JavaDocs for the simple method.  They provide the arguments, return type, and the purpose of the method.   The one thing that was kind of ambiguous is that ChatGPT attempted to identify the variables as always the numerator or denominator.  From the code, we can see that this isn’t always true; however, if a developer is checking, they should be able to correct it fairly easily. Now, at first glance, this will appear as more trouble than it is worth.  A codebase of significant size is going to have many classes that are comprised of many different methods.  As such, copying and pasting methods one by one is going to be a herculean task.  However, ChatGPT can still be leveraged to speed up high-level code documentation.  Consider the following prompt:Write JavaDocs for these methods public static void add(int a, int b) { System.out.println(a + b); } public static double divide(int a, int b) { double div = 0; if (a > b) { div = a / b ; }else { div = b / a; } return div; }This prompt will produce the following results:/** * Adds two numbers and prints the result. * * @param a The first number. * @param b The second number. */ /** * Calculates the division of two numbers and returns the result. * * @param a The numerator. * @param b The denominator. * @return The division result. */Again, even with multiple methods, ChatGPT returned JavaDocs that are quality and provided enough information for a developer to use, with the exception of the same hiccup for the division method that was previously explored.  In all, ChatGPT did a decent job with writing JavaDocs.Used in this manner, ChatGPT can greatly enhance the speed and quality of development.  When using ChatGPT, multiple methods can be pasted into ChatGPT, and all the necessary JavaDocs are created.  As anyone who has ever had to write this type of documentation knows, it can be very time-consuming and mistake-prone.  However, with ChatGPT, all one has to do is input the code and let the AI system do the rest.  Ultimately ChatGPT will free up developers for more pressing tasks, and the AI will produce quality JavaDocs without making rudimentary errors like forgetting to include a parameter or return type.  With that, another question is how well ChatGPT can be used to write code comments. Code CommentsIn many cases, it is difficult for a 3rd party to write effective code comments.  To provide the most context to the code, the entity that is writing the code should also write the comments.  As such, the first thing that needs to be explored is how ChatGPT writes code comments.  To do this, consider the following code snippet:public static void add(int a, int b) {      System.out.println(a + b); }This code is very basic; however, in a quality codebase, even a method this simple should be documented.  This method would probably take as much time to document as it would be to write; this means it is a perfect candidate for ChatGPT.  To have ChatGPT document the code snippet runs the following prompt:Write a few comments to provide context for the following method public static void add(int a, int b) { System.out.println(a + b); }After running this prompt, ChatGPT will produce the following:public static void add(int a, int b) {    // This method takes two integer parameters, 'a' and 'b'.    // It adds the values of 'a' and 'b' together and prints the result.    System.out.println(a + b);    // The sum of 'a' and 'b' is calculated and printed to the console using System.out.println().    // This method does not return any value (void). }At first glance, one may notice that ChatGPT generated several comments.  This can be a pro as much as it can be a con since it can bloat the codebase.  With that, one may notice that the output from ChatGPT does have a couple of unnecessary comments that can bloat the code.  For example, there is a comment that says that the method takes in two integers, and another says that the method returns void.  For code comments, those comments are not necessary as they don’t contribute to the overall context of the code.  However, if the prompt is modified to,Write a comment that describes what this method does public static void add(int a, int b) { System.out.println(a + b); }It will produce the following:public static void add(int a, int b) {    // This method calculates the sum of two integers, 'a' and 'b',    // and displays the result by printing it to the console. }This prompt produced two comments that, when combined, form one complete sentence that describes what the method does. Now, this was for a relatively simple method.  As any programmer knows, a method will probably be larger and more complex than the add method.  As such, let’s consider the division method again:public static double divide(int a, int b) {      double div = 0;      if (a > b) {            div = a / b ;      }else {            div = b / a;      }      return div; }This method is a little more complex than the add method.  In this case, this method will return the quotient of a and b if a is greater than b or the quotient of b and a if b is greater than a.  With that, if the following prompt is inputted,Write comments to add context to this method public static double divide(int a, int b) { double div = 0; if (a > b) { div = a / b ; }else { div = b / a; } return div; }it will produce the following,public static double divide(int a, int b) {    // This method calculates the division of two integers and returns the result.    double div = 0;    // Variable to store the division result.    if (a > b) {        div = a / b;        // If 'a' is greater than 'b', divide 'a' by 'b' and assign the result to 'div'.    } else {        div = b / a;        // If 'b' is greater than or equal to 'a', divide 'b' by 'a' and assign the result to 'div'.    }    return div;    // Return the division result. }In short, ChatGPT will document every line of code again.  The comments do provide code context, but the comments don’t provide anything that can’t simply be read in the code.  Also, if this prompt is modified, ChatGPT, at the time of writing this article, will still produce relatively useless comments.Finally, if a prompt like the following is used:Write only the necessary comments for a developer to use public static double divide(int a, int b) { double div = 0; if (a > b) { div = a / b ; }else { div = b / a; } return div; }it will yield:// Calculates the division of two numbers and returns the result. // Parameters: //   a: The numerator. //   b: The denominator. // Returns: //   The division result.Of all the queries explored thus far, this one arguably yielded the best results.  In this case, the comments are what was generated in the last queries, but the format is much cleaner and easier to modify.  This block could be easily pasted into the codebase, and the unnecessary lines deleted. In all, it took a very specific prompt to produce marginally acceptable code comments.  At best, the code comments that were produced didn’t provide any extra context that could not be deduced from reading the code.  It can also be said that the code comments that were produced bloated the code and, to some, may have made it more confusing.  As such, for code comments, ChatGPT probably isn’t the best tool to use.  At best, a developer will have to remove unnecessary lines of comments and probably have to re-write many of them as well. There is also the issue of having to produce a prompt that is specific enough to generate proper comments. In all, whether a person should use ChatGPT as a code comment generator is up to them.  In theory, the comment produced could be leveraged in places like education, where code examples need to be heavily commented on to provide context to those who may not have a background in the language.  However, in terms of production code, though it will ultimately depend on the organization’s coding standard, ChatGPT will not produce code comments that would be mergeable in many places. Keytake Aways  In terms of codebase comments, ChatGPT is hit-and-miss.  As was seen, the code comments that ChatGPT produced were reminiscent of a college-level developer.  That is, ChatGPT commented on every line of code and only stated the obvious.  Since ChatGPT commented on every line of code, it can be argued that it bloated the codebase to a degree.  However, when a very specific prompt was run, it produced comments similar to what would be found in JavaDocs and what is expected by many organizations.  However, in terms of JavaDocs, ChatGPT shined.  The JavaDocs that ChatGPT produced were all very well written and provided the correct amount of information for a developer to easily digest and apply. As such, a few things can be summarized with what was explored.1.     Queries have to be very specific when it comes to code comments.2.     ChatGPT tends to produce unnecessary code comments that can bloat the codebase. 3.     Depending on the type/quality of code comments, ChatGPT may not be the ideal tool for automatic code documentation.4.     ChatGPT produces documentation akin to JavaDocs better than comments in the codebase.SummaryIn summary, what constitutes quality code documentation is often up to a team.  However, by many standards, ChatGPT tends to produce unnecessary code comments that don’t add much context and can easily bloat the codebase.  However, for higher-level documentation like JavaDocs, ChatGPT is an excellent tool that provides the proper amount of information.  In all, it probably isn’t the best idea to use ChatGPT as a means to generate comments for software written by a human, but it can be used to quickly produce higher-level documentation such as JavaDocs. As was seen, multiple methods can easily be documented in a matter of seconds using ChatGPT.  As such, in terms of productivity, when it comes to higher-level documentation, ChatGPT can be a great productivity tool that could help speed up development. Author BioM.T. White has been programming since the age of 12. His fascination with robotics flourished when he was a child programming microcontrollers such as Arduino. M.T. currently holds an undergraduate degree in mathematics, and a master's degree in software engineering, and is currently working on an MBA in IT project management. M.T. is currently working as a software developer for a major US defense contractor and is an adjunct CIS instructor at ECPI University. His background mostly stems from the automation industry where he programmed PLCs and HMIs for many different types of applications. M.T. has programmed many different brands of PLCs over the years and has developed HMIs using many different tools.Author of the book: Mastering PLC Programming 
Read more
  • 0
  • 0
  • 14624
article-image-analyzing-eurostat-data-using-openai-code-interpreter
Alan Bernardo Palacio
21 Aug 2023
17 min read
Save for later

Analyzing Eurostat Data Using OpenAI Code Interpreter

Alan Bernardo Palacio
21 Aug 2023
17 min read
OpenAI's recent release of the ChatGPT Code Interpreter plugin has introduced a groundbreaking addition to their language model, ChatGPT. This plugin combines the power of Large Language Models (LLMs) with traditional programming capabilities, revolutionizing programming workflows and enhancing data analysis processes. By eliminating the need to write code or set up separate environments, the Code Interpreter plugin simplifies the process of leveraging the capabilities of ChatGPT for data analysis. Let's explore how this plugin can be used to analyze Eurostat data and derive valuable insights.Introduction to the ChatGPT Code Interpreter PluginThe ChatGPT Code Interpreter plugin provides a Python interpreter within a secure execution environment. It supports file uploads and downloads, allowing seamless handling of data. The plugin enables persistent code execution within a chat conversation, allowing users to build on previous code executions. Its purpose is to solve mathematical problems, perform data analysis and visualization, and convert files between different formats.Simplifying Programming WorkflowsBefore the introduction of the Code Interpreter plugin, users had to generate code separately and execute it outside of the ChatGPT model. However, with the Code Interpreter, the entire process can be completed within ChatGPT itself. This eliminates the need for external runtime environments and offers an easy-to-use interface for both programmers and non-programmers to access programming capabilities.Analyzing Eurostat Data Using Code InterpreterTo demonstrate the capabilities of the Code Interpreter plugin, let's analyze Eurostat data. Eurostat provides various datasets related to agriculture, trade, energy, and more. We will focus on analyzing livestock production data in this example.Installing the Required LibrariesTo begin, we need to install the eurostat library, which allows us to access Eurostat data in Python. We can use the following command within the Code Interpreter plugin:!pip install eurostatAnd then we need to obtain the table of contents to obtain the necessary data for the analysis.Obtaining Eurostat DataOnce the library is installed, we can proceed to obtain the table of contents (TOC) of the available Eurostat datasets. This will help us identify the datasets relevant to our analysis. Here is the code to retrieve the TOC:import eurostat import pandas as pd toc = eurostat.get_toc() toc_df = pd.DataFrame(toc[1:],columns=toc[0]) toc_df.head().to_string()We obtain a table that contains the next information:title      code     type       last update of data last table structure change data start data end 0                           Balance of payments  MED_ECBP  dataset  2020-05-28T23:00:00+0200    2021-02-08T23:00:00+0100       2005     2018 1       International trade by SITC - 1 000 EUR  MED_ECET  dataset  2020-05-28T23:00:00+0200   2021-02-08T23:00:00+0100       2005     2019 2                     Primary energy production  MED_EG10  dataset  2020-05-28T23:00:00+0200    2021-02-08T23:00:00+0100       2005     2018 3  Secondary energy production (transformation)  MED_EG20  dataset  2016-10-28T23:00:00+0200    2021-02-08T23:00:00+0100       2000     2015 4                            Energy consumption  MED_EG30  dataset  2020-05-28T23:00:00+0200    2021-02-08T23:00:00+0100       2005     2018Let’s save this into a CSV file:toc_df.to_csv('toc_df',index=False)The resulting table will contain information such as the dataset title, code, type, last update of data, and data start/end years.Identifying Relevant DatasetsNext, we can use the uploaded table of contents file to find the dataset codes that are most relevant to our analysis. In this case, we are interested in datasets related to crop production, livestock numbers, fertilizer usage, and economic accounts for agriculture. We can use the following code within the Code Interpreter:I have uploaded a file with Eurostat datasets and I need to find the codes for the datasets that most resemble the next indicators: - Crops production in tonnes by NUTS 2 regions. - Livestock and meat numbers by NUTS 2 regions. - Poultry production or similar by NUTS 2 regions. - Mlik or derivates production or similar by NUTS 2 regions. - Economic Accounts for Agriculture (EAA) by NUTS 2 regions, where we will take the total intermediate consumption as a proxy for input energy. The assistant will now analyze the uploaded and provided this: The uploaded file contains the following columns: - `title`: The title of the dataset. - `code`: The code of the dataset. - `type`: The type of the entry (all seem to be datasets). - `last update of data`: The date of the last update of the dataset. - `last table structure change`: The date of the last structural change of the dataset. - `data start`: The start year of the data. - `data end`: The end year of the data. To find the codes for the datasets that most resemble the indicators you mentioned, I will search the dataset titles for relevant keywords. For each indicator, I'll look for the following keywords: 1. Crop production: "crop", "production", "NUTS 2". 2. Livestock numbers: "livestock", "NUTS 2". 3. Fertilizer usage: "fertilizer", "NUTS 2". 4. Economic Accounts for Agriculture (EAA): "economic accounts", "agriculture", "NUTS 2". Let's start this search. Here are the dataset codes that most resemble your indicators: 1. **Crop production in tonnes by NUTS 2 regions:**    - `APRO_CPNHR`: Crop production in national humidity by NUTS 2 regions (data available from 2000 to 2023)    - `APRO_CPNHR_H`: Crop production by NUTS 2 regions - historical data (data available from 1975 to 1999)    - `APRO_CPSHR`: Crop production in EU standard humidity by NUTS 2 regions (data available from 2000 to 2023) 2. **Livestock numbers by NUTS 2 regions:**    - `TAI06`: Share of main livestock types in total livestock (data available from 2005 to 2016)    - `EF_KVAAREG`: Key farm variables: area, livestock (LSU), labour force (data available from 2005 to 2013)    - `EF_KVECSLEG`: Key variables: area, livestock (LSU), labour force by economic size class (data available from 2005 to 2013)    - `EF_KVFTREG`: Key variables: area, livestock (LSU), labour force by type of farming (data available from 2005 to 2013)    - `EF_LSK_MAIN`: Main livestock indicators by NUTS 2 regions (data available from 2005 to 2020)    - `EF_LS_OVAAREG`: Livestock: number of farms and heads by size of the economic output (data available from 1990 to 2007)    - `EF_LS_OVESU`: Livestock: number of farms and heads by economic size class (data available from 1990 to 2007)    - `EF_LS_OVLSUREG`: Livestock: number of farms and heads by livestock size class (data available from 1990 to 2007)    - `EF_OLSAAREG`: Livestock: number of farms and heads of animals by size of the agricultural area (data available from 2005 to 2013)    - `EF_OLSECSREG`: Livestock: number of farms and heads of animals by economic size class (data available from 2005 to 2013)    - `EF_OLSLSUREG`: Livestock: number of farms and heads of animals by livestock size class (data available from 2005 to 2013)    - `AEI_EF_LS`: Share of main livestock types in total livestock (data available from 2005 to 2016) 3. **Fertilizer usage or similar by NUTS 2 regions:**    - Unfortunately, there were no datasets found that match this indicator. 4. **Economic Accounts for Agriculture (EAA) by NUTS 2 regions:**    - `AGR_R_ACCTS`: Economic accounts for agriculture by NUTS 2 regions (data available from 1980 to 2021)    - `AGR_R_ACCTS_H`: Economic accounts for agriculture by NUTS 2 regions - historical data (data available from 1973 to 2012) Please note that the data ranges for each dataset may not cover the exact period you are interested in. You might need to merge data from multiple datasets or look for additional datasets to fill in any gaps.Based on this, we can retrieve the next datasets:Crop production in tonnes by NUTS 2 regions:APRO_CPNHR: Crop production in national humidity by NUTS 2 regions (data available from 2000 to 2023)APRO_CPSHR: Crop production in EU standard humidity by NUTS 2 regions (data available from 2000 to 2023)Livestock numbers by NUTS 2 regions:EF_LSK_MAIN: Main livestock indicators by NUTS 2 regions (data available from 2005 to 2020)Economic Accounts for Agriculture (EAA) by NUTS 2 regions:AGR_R_ACCTS: Economic accounts for agriculture by NUTS 2 regions (data available from 1980 to 2021)As a next step, we can start downloading one of the datasets using the Eurostat API.Analyzing Livestock Production DataWe will focus on the "Livestock numbers by NUTS 2 regions" dataset (EF_LSK_MAIN) for our analysis. Let's proceed with downloading and analyzing this dataset:# Animal production livestock_prod_code = 'EF_LSK_MAIN' livestock_prod_pars = eurostat.get_pars(livestock_prod_code) print(livestock_prod_pars) par_values = eurostat.get_par_values(livestock_prod_code, 'geo') # filter the regions for germany de_par_values = {    'unit':'LSU',    'so_eur':'TOTAL',    'geo':[p for p in par_values if all([p.startswith('DE'),len(p)==4])]} # Download data for de filtered regions livestock_prod_data = eurostat.get_data_df(livestock_prod_code, filter_pars=de_par_values) print(livestock_prod_data.head().to_string())Which produces the following result:['freq', 'lsu', 'animals', 'farmtype', 'agrarea', 'so_eur', 'unit', 'geo'] freq   lsu animals farmtype  agrarea so_eur unit geo\\TIME_PERIOD  2005  2007  2010  2013  2016  2020 0    A  LSU0   A0010  FT15_SO  HA10-19  TOTAL  LSU            DE11   0.0   0.0   0.0   0.0  None   0.0 1    A  LSU0   A0010  FT15_SO    HA2-4  TOTAL  LSU            DE11   0.0   0.0   NaN   NaN  None   NaN 2    A  LSU0   A0010  FT15_SO  HA20-29  TOTAL  LSU            DE11   0.0   0.0   0.0   0.0  None   0.0 3    A  LSU0   A0010  FT15_SO  HA30-49  TOTAL  LSU            DE11   0.0   0.0   0.0   0.0  None   0.0 4    A  LSU0   A0010  FT15_SO    HA5-9  TOTAL  LSU            DE11   0.0   0.0   0.0   0.0  None   0.0The code above filters the dataset for Germany's NUTS 2 regions, specifically focusing on the unit of measurement (LSU) and the standard output in Euros (TOTAL). The resulting DataFrame provides a glimpse of the livestock production data for different regions and years.Some of the codes are still not meaningful, specifically, the ones related to animals, so let’s obtain some results about it:# Get the values in the dataset livestock_prod_animal_vals = eurostat.get_par_values(livestock_prod_code, 'animals') # Obtain their meaning livestock_prod_animal_codes = [p for p in eurostat.get_dic(livestock_prod_code, 'animals') if p[0] in livestock_prod_animal_vals] livestock_prod_animal_codes = pd.DataFrame(livestock_prod_animal_codes,columns= ['code','meaning']) print(livestock_prod_animal_codes.head().to_string())Which produces the next:code                                meaning 0  A0010                              Livestock 1  A1000  Live horses, asses, mules and hinnies 2  A2000                    Live bovine animals 3  A3100           Live swine, domestic species 4  A4100                             Live sheepNow let’s download both datasets and ask the ChatGPT code interpreter to run some analysis for us. We want to see some basic analysis of the data that use these to run some basic analysis.Visualizing and Analyzing the Livestock Production DataWe can leverage the Code Interpreter plugin to visualize and analyze the downloaded livestock production data. I’ve uploaded the file to the code interpreter and ask it to create an analysis of the data:The result is a very good initial evaluation of the data. The complete response its:The data seems to pertain to livestock production and has the following columns: - `freq`: The frequency of the data - `lsu`: LSU (Livestock Unit) - a reference unit which facilitates the aggregation of livestock from various species and age according to their nutritional or feed requirement. - `animals`: The type of animals - `farmtype`: Type of the farm - `agrarea`: The agricultural area - `so_eur`: Unknown, needs further clarification - `unit`: The unit of measurement - `geo\\TIME_PERIOD`: Geographical region and time period - `2005`, `2007`, `2010`, `2013`, `2016`, `2020`: These seem to be the years for which the data was collected, indicating the measure of the livestock production. To provide an insightful analysis, let's check the basic statistics of the numerical data and count the unique values of the categorical data. The basic statistics of the numerical data (years 2005, 2007, 2010, 2013, 2016, and 2020) are as follows: - For each year, we have a substantial number of entries (count). - The mean (average) varies across the years, with the highest being around 3,250 for the year 2007 and the lowest around 1,759 for the year 2020. - The standard deviation, which measures the dispersion of the data from the mean, is quite large for all years, suggesting a significant variation in the data. - The minimum value is 0 for all years, which indicates that in some cases, there was no livestock production. - The 25th, 50th (median), and 75th percentiles are 0 for many years, indicating that a substantial portion of the data has low or zero values. - The maximum value is quite large for all years, reaching up to around 3,062,740 in 2020, suggesting that some entities had very high livestock production. For the year 2016, there are no data points available. This might be due to missing data or no data collection in that year. Regarding the categorical data: - `freq` has only one unique value, which does not provide any variability. - `lsu`, `animals`, `farmtype`, `agrarea`, and `geo\\TIME_PERIOD` have multiple unique values, indicating different categories within these fields. - `so_eur` and `unit` also have only one unique value each. Next, we can further examine the distribution of the numerical data and the most common categories in the categorical data. We could also investigate the missing values in the dataset.This is a great starting point, now I’ll ask Code Interpreter to run some basic analysis on the data. I’ve uploaded the codes and ask it to join the data and provide some basic visualizations, which results in the next answer:The uploaded file contains codes for different types of livestock and their meanings. Now, let's join this data with the original dataset. After that, we will visualize the livestock production by year and by different categories.Up next it creates a visualization of the data:The image comes with the next description:The bar chart illustrates the total livestock production over the years. Some observations from the plot include: - The total livestock production appears to be highest in the years 2005 and 2007. - There's a noticeable drop in total production in 2010 and 2013. - The year 2016 does not have any data. - There's a slight increase in total production in 2020 compared to 2013. Next, let's analyze the livestock production by different categories, such as the type of animals and the type of farms.Up next it creates a visualization of the joined data by type of animal:It not only provides the visualization but also an analysis of the data:The bar chart shows the top 5 animal types with the highest total livestock production. Some observations from the plot include: - "Livestock" has the highest total production. However, this category may be a general category that includes various types of animals. - "Live bovine animals" and "Live swine, domestic species" have the next highest total production levels. - "Live poultry, domestic species" and "Live sheep" also contribute significantly to the total livestock production. Next, let's analyze the livestock production by different farm types.As we can see, the analysis continues with the next of step of the analysis. First by creating the visualization:And then by providing the resulting analysis:The bar chart shows the top 5 farm types with the highest total livestock production. Some observations from the plot include: - The farm type "FT15_SO" has the highest total livestock production. However, without a proper definition for this farm type, it's hard to interpret what this category entails. - The farm types "FT16_SO", "FT10_SO", "FT14_SO", and "FT08_SO" also have significant levels of livestock production. These visualizations provide a broad overview of the livestock production trends by year, animal type, and farm type. For a more detailed analysis, it would be beneficial to have more context or information about the different categories, especially the farm types.The Code Interpreter plugin is particularly useful for conducting data analysis and visualization tasks. It allows users to directly interact with large datasets within ChatGPT, posing questions and extracting valuable insights without the need for writing code. The plugin's ability to handle substantial amounts of data enables efficient exploration and analysis, enhancing decision-making processes. Furthermore, it provides visual representations of complex datasets, simplifying data comprehension and aiding in the communication of findings.The resulting analyses provide insights into the most common animal types and farm types contributing to livestock production.ConclusionThe Eurostat dataset, integrated with OpenAI's ChatGPT Code Interpreter plugin, streamlines data analysis. This fusion of programming and language models empowers users to extract insights from vast datasets, regardless of coding expertise. With simplified workflows, the plugin caters to programmers and non-programmers alike, enabling data retrieval, filtering, visualization, and basic analysis. This innovation has applications in marketing, finance, HR, and healthcare, democratizing coding and fostering collaboration. The technology's evolution holds the promise of revolutionizing programming and data analysis, empowering users to glean insights from intricate datasets for informed decision-making across industries.Author Bio:Alan Bernardo Palacio is a data scientist and an engineer with vast experience in different engineering fields. His focus has been the development and application of state-of-the-art data products and algorithms in several industries. He has worked for companies such as Ernst and Young, Globant, and now holds a data engineer position at Ebiquity Media helping the company to create a scalable data pipeline. Alan graduated with a Mechanical Engineering degree from the National University of Tucuman in 2015, participated as the founder in startups, and later on earned a Master's degree from the faculty of Mathematics in the Autonomous University of Barcelona in 2017. Originally from Argentina, he now works and resides in the Netherlands.LinkedIn
Read more
  • 0
  • 0
  • 7853

article-image-ai-in-the-real-world-insurance
Julian Melanson
21 Jul 2023
5 min read
Save for later

AI in the Real World: Insurance

Julian Melanson
21 Jul 2023
5 min read
As the relentless tide of technological advancement swells, the insurance industry, among many others, is facing a pivotal transformation. The inception and evolution of insurance technology or "insurtech" mandates that insurance agents, brokers, and companies diligently adapt and assimilate novel tools and methodologies to augment their operational efficiency and competitiveness. Of the emerging technologies, the innovative language model ChatGPT, conceived and developed by OpenAI, is showing significant potential to redefine the landscape of the insurance industry.This powerful AI model offers a diverse suite of services, each capable of improving the lives of insurance agents in numerous ways. From perfecting customer service and streamlining underwriting to improving data analytics and fraud detection, ChatGPT opens a Pandora's box of possibilities. Yet, the efficacy and feasibility of these innovative solutions call for a judicious understanding of the technology's strengths and limitations.The advantages of AI in InsuranceFirstly, customer service, the linchpin of the insurance business, is an area that stands to gain substantially from the implementation of ChatGPT. Insurance products and processes, notoriously labyrinthine to the average consumer, are sources of frequent queries and uncertainties. By employing ChatGPT, insurance firms can automatically answer routine questions related to policy details, billing, claims statuses, and more, in an array of languages. In doing so, it significantly alleviates the burden on customer service agents and concurrently boosts customer engagement.Such automated systems also find favor among modern consumers, with reports suggesting a notable preference for chatbot interactions. ChatGPT, with its impressive capabilities in generating human-like text responses, can amplify the effectiveness of customer service chatbots. These enhancements invariably lead to increased customer satisfaction, freeing up human agents to tackle more complex customer concerns. Furthermore, ChatGPT's natural language processing prowess can be harnessed to guide customers on suitable insurance products and services, digitizing sales and distribution.The underwriting process, a traditionally time-consuming task characterized by risk evaluation, is another sector ripe for the automation that ChatGPT brings. While Artificial Intelligence (AI) and Machine Learning (ML) models have previously been employed to improve the accuracy of risk assessment, gaps in data and information remain problematic. ChatGPT addresses this issue by enhancing data collection and analysis, investigating digital resources for analogous cases, and speeding up the identification of risk patterns.Through this sophisticated data analysis, ChatGPT can evaluate factors like a customer's age, financial status, occupation, and lifestyle, thereby determining their risk profile. This information enables insurers to offer personalized coverage and pricing, improving customer experience, and streamlining underwriting. In addition, it can alert insurers about high-risk individuals or circumstances, proactively averting potential losses. This automatic evaluation brings with it many questions around AI and ethics (which you can read more about here) but the advantages of getting such a system working are clear.Claims processing, an insurance operation infamous for its high cost and low level of digitization, is another area primed for disruption by ChatGPT. The AI model can proficiently extract and categorize information from claims forms and other documents, drastically reducing the laborious and time-intensive task of manual data entry.A significant advantage arising from automating claims processing is its potential in fraud detection. With estimates by the FBI suggesting that insurance fraud costs American families hundreds of dollars each year in premium hikes, the value of early fraud detection cannot be overstated. ChatGPT can help in showing patterns of inconsistencies in claim forms, then flagging suspicious entries for human review. By alerting insurers to both overt and covert attempts at fraud, ChatGPT can help save billions of dollars annually.Reasons to be carefulAs a caveat, while the utility and advantages of ChatGPT in the insurance industry are substantial, one must consider the nascent stage of this technology. Its real-world impact will be contingent on its successful integration within existing processes and wide-ranging adoption. Moreover, while AI systems offer remarkable capabilities, they are not infallible and require human supervision. Thus, the technology's explainability, its transparency, and its limitations should be carefully considered and understood.In summary, the potential of ChatGPT to transform the insurance industry is vast, promising efficiency gains, cost reductions, and enhanced customer service. But realizing these advantages requires industry-wide receptiveness, careful integration, and judicious application, along with a respect for the limitations of the technology.Author BioJulian Melanson is one of the founders of Leap Year Learning. Leap Year Learning is a cutting-edge online school that specializes in teaching creative disciplines and integrating AI tools. We believe that creativity and AI are the keys to a successful future and our courses help equip students with the skills they need to succeed in a continuously evolving world. Our seasoned instructors bring real-world experience to the virtual classroom and our interactive lessons help students reinforce their learning with hands-on activities.No matter your background, from beginners to experts, hobbyists to professionals, Leap Year Learning is here to bring in the future of creativity, productivity, and learning!
Read more
  • 0
  • 0
  • 4225
Modal Close icon
Modal Close icon