Go Meets AI: Why This Matters for Developers
The world of development has changed. If before we wrote code manually and spent hours hunting for bugs, today neural networks take over the routine. But how does this work in practice? Can you combine the power of Go and ChatGPT in one project? The answer is yes, and it's easier than it seems.
Golang is a language built for performance and concurrency. And ChatGPT is a model capable of generating text, answering questions, and even writing code. Together, they form a tandem that can automate documentation, generate tests, analyze errors, and much more. In this article, we will break down how to use ChatGPT in Go development with real code examples.
Getting Started: Setting Up the Environment for the OpenAI API
Before writing code, you need to get access to the OpenAI API. This is a standard REST interface that is easy to call from any language, including Go.
Step 1. Get an API Key
Register at platform.openai.com, create a new secret key in the API Keys section. Save it — you'll need it for all requests.
Step 2. Create a Basic Go Project Structure
Create a new module and install dependencies:
mkdir go-chatgptcd go-chatgptgo mod init go-chatgptWe'll need an HTTP client. You can use the standard net/http, but for convenience, let's add a library for working with JSON:
go get github.com/go-resty/resty/v2Writing the First Request to ChatGPT in Go
The simplest way to integrate ChatGPT is to send a POST request to the endpoint https://api.openai.com/v1/chat/completions. Let's look at an example where we ask the model to explain what a goroutine is in Go.
Example 1: Simple Request to the Model
package main
import (\t"encoding/json"\t"fmt"\t"os"
\t"github.com/go-resty/resty/v2")
type Message struct {\tRole string `json:"role"`\tContent string `json:"content"`}
type Request struct {\tModel string `json:"model"`\tMessages []Message `json:"messages"`}
type Response struct {\tChoices []struct {\t\tMessage Message `json:"message"`\t} `json:"choices"`}
func main() {\tapiKey := os.Getenv("OPENAI_API_KEY")\tif apiKey == "" {\t\tfmt.Println("Error: set the OPENAI_API_KEY environment variable")\t\treturn\t}
\tclient := resty.New()
\treq := Request{\t\tModel: "gpt-3.5-turbo",\t\tMessages: []Message{\t\t\t{Role: "user", Content: "Explain what a goroutine is in Go in simple terms"},\t\t},\t}
\treqBody, _ := json.Marshal(req)
\tvar resp Response\t_, err := client.R().\t\tSetHeader("Authorization", "Bearer "+apiKey).\t\tSetHeader("Content-Type", "application/json").\t\tSetBody(string(reqBody)).\t\tSetResult(&resp).\t\tPost("https://api.openai.com/v1/chat/completions")
\tif err != nil {\t\tfmt.Println("Request error:", err)\t\treturn\t}
\tif len(resp.Choices) > 0 {\t\tfmt.Println("ChatGPT response:")\t\tfmt.Println(resp.Choices[0].Message.Content)\t}}Run the script:
export OPENAI_API_KEY="sk-your_key"go run main.goYou will get a detailed response from the neural network. This is the foundation on which any ChatGPT integration with Go is built.
Advanced Scenarios: Creating an AI Assistant for Developers
Just sending requests is boring. Let's make something useful: write an assistant that takes Go code as input and returns its optimized version with comments.
Example 2: AI Code Reviewer in Golang
package main
import (\t"bufio"\t"encoding/json"\t"fmt"\t"os"\t"strings"
\t"github.com/go-resty/re