OpenAI 代码生成

2026-11-04 17:09 更新

编写、审查、编辑代码,以及回答代码问题,都是OpenAI模型的主要用途。本指南说明如何通过gpt-6-astra和Codex生成代码。

<a id="get-started"></a>

开始使用

  • 使用Codex:把代码库连接到开箱即用的软件工程智能体,推进项目。
  • 集成编程模型:在自己的应用中使用模型,例如加入模型选择器。

<a id="use-codex"></a>

使用 Codex

Codex是OpenAI的软件开发编程智能体,帮助编写、审查和调试代码。可在IDE、CLI、网页、移动端网站,或通过SDK在CI/CD流水线中交互。

文档入口:ChatGPT文档总入口(含Codex导航)。原Codex文档首页已跳转至这个总入口,需在其中选择Codex栏目查找具体功能。

Codex适合配合较新的通用模型使用,例如gpt-6.1-sol。较早的gpt-5.3-codex已弃用,计划于2027年4月1日关闭。安装、参考、价格等资料见ChatGPT文档总入口(含Codex导航)。

<a id="integrate-with-coding-models"></a>

集成编程模型

多数基于API的代码生成任务,可先从gpt-6-astra开始。它兼顾通用与编程工作,适合需要编写代码、理解需求、检查文档及处理更广工作流的应用。

下面通过Responses API请求代码。程序内任务是:“找出下面代码中的空指针异常。”给定Python函数读取user.profile.name,却以None调用;模型需定位问题。保留原英文任务字符串,代码添加中文注释。

集成编程模型(来源示例1,javascript)

// [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
// [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
import OpenAI from "openai";
const openai = new OpenAI();

const result = await openai.responses.create({
  model: "gpt-6-astra",
  input: `Find the null pointer exception in this code:

def display_name(user):
    return user.profile.name

print(display_name(None))
`,
  reasoning: { effort: "high" },
});

console.log(result.output_text);

集成编程模型(来源示例2,python)

## [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
## [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
from openai import OpenAI

client = OpenAI()

result = client.responses.create(
    model="gpt-6-astra",
    input="""Find the null pointer exception in this code:

def display_name(user):
    return user.profile.name

print(display_name(None))
""",
    reasoning={"effort": "high"},
)

print(result.output_text)

集成编程模型(来源示例3,go)

// [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
// [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
package main

import (
    "context"
    "fmt"

    "github.com/openai/openai-go/v3"
    "github.com/openai/openai-go/v3/responses"
    "github.com/openai/openai-go/v3/shared"
)

func main() {
    client := openai.NewClient()
    response, err := client.Responses.New(context.Background(), responses.ResponseNewParams{
        Model: "gpt-6-astra",
        Input: responses.ResponseNewParamsInputUnion{OfString: openai.String(`Find the null pointer exception in this code:

def display_name(user):
    return user.profile.name

print(display_name(None))`)},
        Reasoning: shared.ReasoningParam{Effort: shared.ReasoningEffortHigh},
    })
    if err != nil {
        panic(err)
    }
    fmt.Println(response.OutputText())
}

集成编程模型(来源示例4,java)

// [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
// [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.Reasoning;
import com.openai.models.ReasoningEffort;
import com.openai.models.responses.ResponseCreateParams;

String code =
    """
    def display_name(user):
        return user.profile.name

    print(display_name(None))
    """;

ResponseCreateParams params =
    ResponseCreateParams.builder()
        .model("gpt-6-astra")
        .input("Find the null pointer exception in this code:\n\n" + code)
        .reasoning(Reasoning.builder().effort(ReasoningEffort.HIGH).build())
        .build();

client.responses().create(params).output().stream()
    .flatMap(item -> item.message().stream())
    .flatMap(message -> message.content().stream())
    .flatMap(content -> content.outputText().stream())
    .forEach(text -> System.out.println(text.text()));

集成编程模型(来源示例5,csharp)

// [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
// [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
using OpenAI.Responses;
#pragma warning disable OPENAI001

string key = Environment.GetEnvironmentVariable("OPENAI_API_KEY")!;
ResponsesClient client = new(key);

CreateResponseOptions options = new()
{
    Model = "gpt-6-astra",
    ReasoningOptions = new ResponseReasoningOptions
    {
        ReasoningEffortLevel = ResponseReasoningEffortLevel.High,
    },
};
options.InputItems.Add(
    ResponseItem.CreateUserMessageItem(
        """
        Find the null pointer exception in this code:

        def display_name(user):
            return user.profile.name

        print(display_name(None))
        """
    )
);

ResponseResult response = await client.CreateResponseAsync(options);
Console.WriteLine(response.GetOutputText());

集成编程模型(来源示例6,ruby)

## [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
## [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
require "openai"

client = OpenAI::Client.new
code = <<~PYTHON
  def display_name(user):
      return user.profile.name

  print(display_name(None))
PYTHON

response = client.responses.create(
  model: "gpt-6-astra",
  input: "Find the null pointer exception in this code:\n\n#{code}",
  reasoning: { effort: :high }
)

puts(response.output_text)

集成编程模型(来源示例7,bash)

## [中文] 通过Responses提交待审查代码,请模型定位以None调用时的空引用问题。
## [中文] 输入代码作为任务文本传给模型,本程序不会执行该段待审查代码;读取响应中的文本结果。
curl https://api.openai.com/v1/responses \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "gpt-6-astra",
    "input": "Find the null pointer exception in this code:\n\ndef display_name(user):\n    return user.profile.name\n\nprint(display_name(None))\n",
    "reasoning": { "effort": "high" }
  }'

<a id="frontend-development"></a>

前端开发

GPT-5家族模型擅长前端开发,配合Codex等编程智能体执行框架时尤其如此。官方页面的演示应用由单个提示词生成,没有手写代码,可用于观察前端生成质量,以及界面密集型代码任务的提示模式。

<a id="next-steps"></a>

后续资源

参阅ChatGPT文档总入口(含Codex导航)查找相关能力、界面设置及细节;模型指南包含模型选择、功能、迁移及编程/智能体提示模式;也可比较gpt-6-astra与gpt-6.1-sol。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号