AI-Powered Code Generation with GitHub Copilot, Cody, and ChatGPT

by Didin J. on Aug 24, 2025 AI-Powered Code Generation with GitHub Copilot, Cody, and ChatGPT

Discover how GitHub Copilot, Cody, and ChatGPT boost coding productivity. Compare features, examples, pros & cons, and best practices for developers.

Artificial Intelligence (AI) is transforming the way developers write code. Instead of spending hours on boilerplate or searching Stack Overflow, developers now have powerful AI assistants that can suggest, generate, and even explain code in real time. Among the most popular tools in this space are GitHub Copilot, Cody (by Sourcegraph), and ChatGPT (by OpenAI).

These tools all aim to make coding faster and smarter, but they approach the problem differently:

  • GitHub Copilot integrates directly into your editor and suggests code as you type.

  • Cody focuses on deep codebase understanding, refactoring, and in-context assistance.

  • ChatGPT works as a conversational assistant, where you can request anything from generating algorithms to debugging and explaining code.

In this tutorial, we’ll explore how each of these tools works, look at real coding examples, and compare their strengths and weaknesses so you can decide which AI assistant best fits your workflow.


Comparison Table

Here’s a head-to-head comparison of Copilot, Cody, and ChatGPT:

Feature / Tool GitHub Copilot Cody (Sourcegraph) ChatGPT (OpenAI)
Integration Built into IDEs (VS Code, JetBrains, Neovim) VS Code, JetBrains, Sourcegraph integration Web app, mobile apps, API (can be integrated via plugins)
Code Suggestion Style Inline autocomplete while typing Inline + chat panel (deep repo context) Conversational Q&A, copy-paste workflow
Languages Supported 50+ languages (JS, TS, Python, Java, Go, etc.) Broad support with context-aware repo understanding Broad (depends on prompt), supports pseudocode + explanations
Context Awareness File-level + limited project context Full project/repo awareness via Sourcegraph indexing Conversational memory, but not bound to editor context
Strengths Fast inline coding, productivity boost Refactoring, large codebase navigation, context-rich Flexible, great at explanations, debugging, brainstorming
Weaknesses Sometimes suggests insecure/incorrect code Requires Sourcegraph setup for full power Requires copy-paste into IDE, not real-time inline
Best Use Cases Writing boilerplate, functions, UI components Large projects, legacy code, repo-wide understanding Learning, debugging, generating snippets, docs
Pricing $10/month individual, $19/month business Free & paid tiers (Pro for more context + features) Free (limited), Plus ($20/month), Team/Enterprise plans
Who It’s For Developers who want autocomplete inside IDE Teams with big repos, devs needing context-aware help Developers, learners, teams experimenting with AI


GitHub Copilot

What is GitHub Copilot?

GitHub Copilot is an AI-powered coding assistant developed by GitHub and OpenAI. It integrates directly into your IDE and suggests entire lines or blocks of code as you type. Copilot is powered by OpenAI’s Codex (a descendant of GPT models) and is trained on billions of lines of public code.

Unlike ChatGPT, which works in a conversational interface, Copilot feels like a supercharged autocomplete for your code editor.

Installing GitHub Copilot in VS Code

To get started with GitHub Copilot in Visual Studio Code:

  1. Install the GitHub Copilot extension from the VS Code Marketplace.

  2. Sign in to GitHub and authorize Copilot.

  3. Start typing code in a supported language — Copilot will automatically suggest completions.

💡 Tip: You can press Tab to accept a suggestion or Ctrl + ] / Ctrl + [ to cycle through alternatives.

Example: Generating a Python Function

Suppose you want a function that checks if a string is a palindrome. Start typing:

def is_palindrome(text: str) -> bool:

Copilot may instantly suggest the rest:

    text = text.lower().replace(" ", "")
    return text == text[::-1]

✅ In just a few keystrokes, you have a working solution.

Example: React Component with Copilot

In a React project, type the following inside your App.js or .tsx file:

function TodoList({ todos }) {

Copilot can suggest:

  return (
    <ul>
      {todos.map((todo, index) => (
        <li key={index}>{todo}</li>
      ))}
    </ul>
  );
}

This saves time writing boilerplate UI code.

Pros of GitHub Copilot

  • Seamless editor integration — feels like a natural extension of typing.

  • Fast — real-time inline suggestions.

  • Supports many languages including JavaScript, TypeScript, Python, Go, Java, C#, Rust, and more.

  • Great for boilerplate such as React components, utility functions, and tests.

Cons of GitHub Copilot

  • Limited project context — mostly works at the file level, not full repo understanding.

  • Accuracy issues — sometimes suggests incorrect or insecure code.

  • Paid subscription — requires $10/month (individuals) or $19/month (business).

Summary: GitHub Copilot is best for developers who want inline code suggestions directly in their IDE. It’s excellent for productivity but requires human review to avoid mistakes.


Cody (Sourcegraph Cody)

What is Cody?

Cody is an AI coding assistant built by Sourcegraph, the company behind the powerful code search and navigation tool used in many enterprises. Unlike Copilot, which mainly focuses on inline autocomplete, Cody specializes in understanding your entire codebase.

It can:

  • Explain what a piece of code does.

  • Suggest fixes and refactoring across large projects.

  • Generate new functions using the full project context.

  • Help you navigate and search code repositories.

This makes Cody especially valuable for teams working with large or legacy codebases.

Installing Cody in VS Code

To try Cody in Visual Studio Code:

  1. Install the Cody AI extension.

  2. Log in with a Sourcegraph account (free or enterprise).

  3. Open a project folder in VS Code. Cody will index the repo for deeper context.

  4. Use the chat sidebar (Ctrl+Shift+P → Cody: Chat) or inline completions while coding.

💡 Tip: Cody becomes much more powerful when connected to a Sourcegraph instance for full repo indexing.

Example: Explaining a Function

Imagine you’re working on a legacy Java project and encounter this method:

public String formatDate(LocalDate date) {
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MM-yyyy");
    return date.format(formatter);
}

You can highlight the code and ask Cody:

"Explain this function in plain English."

Cody might respond:

“This function takes a LocalDate object and formats it into a string with the format day-month-year (e.g., 24-08-2025).”

This is especially useful when onboarding to unfamiliar projects.

Example: Refactoring with Cody

Let’s say you want to convert a callback-based Node.js function into async/await. Type:

function fetchData(callback) {
    fs.readFile('data.json', 'utf8', (err, data) => {
        if (err) return callback(err);
        callback(null, JSON.parse(data));
    });
}

Ask Cody in chat:

“Refactor this function to use async/await instead of callbacks.”

Cody might generate:

const fs = require('fs').promises;

async function fetchData() {
    const data = await fs.readFile('data.json', 'utf8');
    return JSON.parse(data);
}

A clean, modernized version in seconds.

Pros of Cody

  • Deep codebase understanding — can reference entire repositories.

  • Great for refactoring and explaining complex/legacy code.

  • Chat + inline support for flexibility.

  • Free tier available with generous limits.

Cons of Cody

  • Requires repo indexing for full power (best with Sourcegraph).

  • Not as fast for inline autocomplete compared to Copilot.

  • Enterprise features may need a paid plan.

Summary: Cody shines when working on large, complex, or legacy projects where context matters. It’s less about quick autocompletions and more about understanding and improving entire codebases.


ChatGPT for Code Generation

What is ChatGPT?

ChatGPT, developed by OpenAI, is a conversational AI that can generate, explain, and debug code in natural language. Unlike Copilot or Cody, which are deeply integrated into IDEs, ChatGPT works primarily as a chat-based assistant accessible via the OpenAI website, mobile apps, or API integrations.

This makes ChatGPT more flexible — you can ask it to:

  • Generate code in any language or framework.

  • Debug and fix errors by pasting error messages.

  • Explain complex algorithms in plain English.

  • Write documentation or unit tests.

Using ChatGPT for Coding

You can use ChatGPT in three main ways:

  1. Web Interface → Simply chat with it and copy/paste the results into your editor.

  2. IDE Plugins → Extensions exist for VS Code, JetBrains, and others that connect to ChatGPT via API.

  3. API → Integrate ChatGPT into your own apps, tools, or workflows.

Example: Generating a Sorting Algorithm

Ask ChatGPT:

“Write a function in Python that sorts a list of numbers using the quicksort algorithm.”

ChatGPT may respond with:

def quicksort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quicksort(left) + middle + quicksort(right)

# Example usage
print(quicksort([3,6,8,10,1,2,1]))

✅ Clear, concise, and ready to use.

Example: Debugging with ChatGPT

Suppose you encounter a TypeError in a React app:

TypeError: Cannot read property 'map' of undefined

Paste the error and a snippet of the component into ChatGPT, and ask:

“Why am I getting this error and how do I fix it?”

ChatGPT might respond:

“This error occurs because todos is undefined when you call .map(). Make sure you pass a default value, e.g. todos || [], or initialize todos as an empty array.”

And suggest a fix:

<ul>
  {(todos || []).map((todo, index) => (
    <li key={index}>{todo}</li>
  ))}
</ul>

Tips for Better Results (Prompt Engineering)

  • Be specific: instead of “write a function,” say “write a Python function that removes duplicates from a list while preserving order.”

  • Provide context: paste relevant code snippets or error messages.

  • Iterate: refine the output by asking follow-up questions.

Pros of ChatGPT

  • Extremely flexible → not tied to one language or IDE.

  • Great at explanations and teaching concepts.

  • Useful for debugging and brainstorming.

  • API available → can be integrated into workflows.

Cons of ChatGPT

  • Not inline → requires copy/paste into IDE unless using plugins.

  • May produce verbose or over-generalized code.

  • Context limited → doesn’t automatically know your repo structure (unless using advanced integrations).

Summary: ChatGPT is the most versatile AI coding assistant, ideal for learning, debugging, and generating snippets in any language. While it lacks real-time inline suggestions, it excels at conversational problem-solving.


Head-to-Head Comparison

Now that we’ve explored GitHub Copilot, Cody, and ChatGPT individually, let’s compare them side by side. Each tool shines in different scenarios — the best choice depends on your workflow, project size, and personal preference.

Integration & Workflow

  • GitHub Copilot: Best for developers who want real-time, inline suggestions directly inside their IDE. It feels like autocomplete on steroids.

  • Cody: Ideal for teams and developers working with large, complex repositories. Its deep repo indexing allows it to refactor and explain code across multiple files.

  • ChatGPT: Most flexible — works in the browser, mobile, or via API. Great for brainstorming, debugging, and explanations, but less convenient for live coding.

Context Awareness

  • Copilot has file-level and limited project context. It’s great for small to medium tasks but struggles with repo-wide logic.

  • Cody can understand and operate across your entire repository, making it powerful for onboarding and large-scale refactors.

  • ChatGPT relies on whatever you paste or describe in the chat. It doesn’t “see” your project unless you provide context manually (or use third-party plugins).

Example Use Cases

  • Copilot: Writing boilerplate code, generating tests, and creating UI components quickly.

  • Cody: Refactoring a legacy Java project, navigating large codebases, and understanding unknown functions.

  • ChatGPT: Learning new algorithms, debugging runtime errors, and generating documentation.

Pricing & Accessibility

  • Copilot: $10/month for individuals, $19/month for businesses.

  • Cody: Free tier with limitations; Pro/Enterprise plans available for full repo context.

  • ChatGPT: Free (basic GPT-3.5), Plus ($20/month for GPT-4), with team/enterprise tiers available.

Comparison Table

Feature / Tool GitHub Copilot Cody (Sourcegraph) ChatGPT (OpenAI)
Integration VS Code, JetBrains, Neovim VS Code, JetBrains, Sourcegraph Web, mobile, API, IDE plugins
Code Suggestion Style Inline autocomplete while typing Inline + chat (repo-aware) Conversational, copy-paste
Languages Supported 50+ languages (JS, TS, Python, Java, Go, etc.) Broad, depends on repo indexing Broad, any language with explanations
Context Awareness File-level + limited project scope Full repo indexing (best with Sourcegraph backend) Only what you paste or describe
Strengths Fast, inline productivity Refactoring, repo-wide insights, explanations Flexible, debugging, brainstorming, documentation
Weaknesses Limited context, occasional insecure code Needs indexing setup, slower inline suggestions No inline autocomplete, manual context required
Best Use Cases Writing boilerplate, quick snippets, UI code Large projects, legacy code, team onboarding Debugging, learning, cross-language code snippets
Pricing $10/month individual, $19/month business Free & Pro/Enterprise tiers Free (GPT-3.5), $20/month Plus (GPT-4)

Quick Takeaway

  • If you want fast code generation inside your editor → choose Copilot.

  • If you need context-aware help across big repositories → use Cody.

  • If you prefer flexibility, explanations, and debugging → ChatGPT is your best bet.


Best Practices for AI-Powered Coding

AI coding assistants like Copilot, Cody, and ChatGPT can dramatically boost productivity — but they are not replacements for good software engineering practices. To get the most out of these tools, here are some best practices every developer should follow:

1. Always Review the Code

AI-generated code may look correct, but it can:

  • Contain bugs or logic errors.

  • Introduce security vulnerabilities (e.g., SQL injection, unsafe handling of input).

  • Be inefficient compared to a hand-optimized solution.

✅ Treat AI suggestions as a starting point, not a final solution.

2. Use AI for Productivity, Not for Learning in Isolation

AI tools are great for boilerplate, scaffolding, and repetitive tasks.

  • Example: Copilot can write a React component skeleton in seconds.

  • Example: Cody can refactor old Node.js callback code into async/await.

But don’t let AI replace your understanding — learn why the code works so you can debug and extend it later.

3. Provide Clear Prompts and Context

With ChatGPT (and Cody’s chat interface), your prompt quality matters.

  • Bad prompt: “Write a function for sorting.”

  • Better prompt: “Write a Python function that sorts a list of integers using merge sort and returns a new sorted list.”

✅ The clearer your instructions, the better the output.

4. Be Mindful of Licensing & Ownership

Some AI-generated code may resemble open-source code from its training data. Always check if your organization has policies regarding:

  • Code attribution.

  • Licensing compatibility (MIT, GPL, etc.).

  • Commercial use of AI-generated code.

5. Combine Tools for Best Results

You don’t have to choose just one AI assistant.

  • Use Copilot for inline coding speed.

  • Use Cody for repo-wide insights and refactoring.

  • Use ChatGPT for explanations, debugging, and brainstorming.

Together, they cover the full spectrum of development needs.

6. Stay Security-Aware

AI suggestions may unintentionally include insecure practices like:

  • Storing passwords in plain text.

  • Using outdated libraries.

  • Not sanitizing user input.

✅ Always run static code analysis, linting, and tests before merging AI-generated code.

Summary: Treat AI coding assistants as collaborators, not replacements. Use them to accelerate development while still applying your own knowledge, testing, and code review discipline.


Mini Case Study: Building the Same Feature with Copilot, Cody, and ChatGPT

To see how these tools differ in practice, let’s try building the same simple feature with each assistant:

👉 Feature Goal: Create a REST API endpoint in Express.js that returns a list of users in JSON format.

const express = require('express');
const app = express();
const port = 3000;

app.get('/users', (req, res) => {

Run the Generate Code, Copilot quickly suggests the following completion:

    const users = [
        { id: 1, name: 'Alice' },
        { id: 2, name: 'Bob' }
    ];
    res.json(users);
});

app.listen(port, () => {
    console.log(`Server is running on port ${port}`);
});

✅ Copilot excels here: inline, instant, ready-to-run.

2. Cody (Sourcegraph Cody)

With Cody, you might paste the same starting snippet into the chat and ask:

“Add an Express route that returns a list of users in JSON.”

Cody can respond with:

app.get('/users', (req, res) => {
  const users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 3, name: 'Charlie' }
  ];
  res.json(users);
});

Cody might also add explanations:

“This endpoint responds to GET requests at /users with a JSON array of user objects.”

✅ Cody not only generates the code but also explains it, useful for onboarding.

3. ChatGPT

In ChatGPT, you’d phrase the request conversationally:

“Write an Express.js server with a /users endpoint that returns a JSON list of users.”

ChatGPT’s response might include the entire working example:

const express = require('express');
const app = express();
const port = 3000;

app.get('/users', (req, res) => {
  const users = [
    { id: 1, name: 'Alice' },
    { id: 2, name: 'Bob' },
    { id: 3, name: 'Charlie' }
  ];
  res.json(users);
});

app.listen(port, () => {
  console.log(`Server running at http://localhost:${port}`);
});

ChatGPT could also add notes like:

“Make sure you run npm install express before running this server.”

✅ ChatGPT gives full context, explanations, and setup guidance.

Key Takeaways from the Case Study

  • Copilot: Fast inline suggestion, minimal context, instant productivity.

  • Cody: Repo-aware and explanatory — useful for learning and working in large projects.

  • ChatGPT: Conversational, provides full code with setup tips, best for explanations and cross-checking.

⚡ This small example shows how each tool approaches the same problem differently:

  • Copilot = speed.

  • Cody = context + explanation.

  • ChatGPT = versatility + guidance.


Conclusion

AI-powered coding assistants are no longer futuristic tools — they are here, and they’re transforming the way developers work every day. Whether it’s GitHub Copilot suggesting inline code, Cody helping you understand and refactor a massive codebase, or ChatGPT guiding you with explanations and debugging help, each tool has its own strengths.

  • Use Copilot if you want fast inline suggestions to speed up everyday coding.

  • Use Cody if you’re working on large or legacy projects and need deep, repo-wide insights.

  • Use ChatGPT if you need flexibility, explanations, debugging, or brainstorming outside of your IDE.

The best part? These tools aren’t mutually exclusive. Many developers find success by combining them — for example, Copilot for boilerplate, Cody for refactoring, and ChatGPT for debugging or learning new concepts.

⚡ The future of software development isn’t about replacing developers with AI. Instead, it’s about giving developers superpowers — letting machines handle repetitive tasks so we can focus on creativity, architecture, and solving real-world problems.

That is just the basics. If you need more deep learning about the AI, ML, and LLMs, you can take the following cheap course:

Happy Coding!