> 技术文档 > OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型


一、前言

 

GPT-4o(\"o\"代表\"全能\")具备处理各种文本、声音和图像资料的能力,能够输出多种格式的文本、声音和图像。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

GPT-4o 的推出标志着 AI 技术的重大突破。它不再局限于单一媒介,而是首次实现了文本、语音和图像的无缝整合。这种多媒体的即时响应能力完全突破了传统人机交互的界限,使交流变得更加自然和流畅,引领了一场全新的交互革命。用户无需在不同的应用间切换来适应各种输入输出形式,GPT-4o 可以一站式处理所有信息类型,无论是文字问题、语音命令还是图像分析,都能迅速提供准确的反馈,大幅提升了效率和用户体验,开启了交流的新时代。

在最新版本的 ChatGPT 中,这种能力得到了进一步加强,使得处理不同媒体形式的输入输出更加轻松自如。无论是日常对话和娱乐,还是专业领域的任务,如编程、数据分析、图形设计或视频编辑,GPT-4o 都能轻松胜任,成为用户必不可少的生产力工具。

二、ChatGPT 4o 国内直接使用

介绍

ChatGPT4o功能:GPT-4o文本对话(支持联网查询)、Code Copilot(写代码、改bug、算法优化等)、DALL-E AI绘画、AI语音对话(练习英语口语、模拟技术面试)、论文插件Consensus、专职家教(精通语数外,拍照上传即可识别问题,给出权威回答,亦可用于模拟考试)、上传文件、数据分析插件Data Analyst等100+GPTS插件

网址:https://ssas.kupepoem.cn

网站优点:

  1. 支持OpenAI最新的ChatGPT4o。

  2. 同时支持PC、手机、平板。

  3. 不需要国外特殊网络,可以直接使用,非常方便 。

  4. 系统运行非常稳定 。

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

支持官方最新推出的ChatGPT4o

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

支持官方最新出的GPTs,100+大模型

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

写作相关的

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

生产力相关的

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

研究与分析相关的

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

教育相关的

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

编程相关的

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

Code Copilot AI编程大模型

探索GPT-->编程--》选择Code Copilot

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

开始聊天。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

进入聊天界面。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

用Java编写一个二分查找的代码,添加中文注释。

输入:

用Java编写一个二分查找的代码,添加中文注释。

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

给出了完整的Java代码类,代码中也包含了完善的注释。并给出了很清晰的解析和进一步优化建议。把代码拷到idea里运行。验证下结果:

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

结果是正确的。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

生成一个java实战课程设计:做一个贪吃蛇游戏

输入:

你是一位java技术专家,游戏开发高手,请用java开发一个贪吃蛇游戏,添加中文注释,有个开始按钮和暂停按钮。

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

给了两个类的完整代码。还给了改进建议,我们先去idea运行看看。把代码复制进来。

运行代码。结果:

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

程序有点小问题,蛇吃不到食物。如图。蛇跟食物会重叠一部分

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

让 Code Copilot 帮我解决这个问题。直接把出问题的截图给它。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

重新生成的代码复制到idea中。运行结果,可以正常吃到蛇了。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

初步的贪吃蛇游戏就做成功了。

升级改进

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

给了改进建议思路。改~ 输入:

再添加计分系统,显示玩家的得分列表。

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

把生成的代码复制到idea中运行;

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

玩两把。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

得分列表有了,但感觉没啥特点。再加点需求 输入:

得分列表按分数降序,每个得分旁边增加一列:游戏结束时间。

 

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

代码复制到idea中。运行。再玩两把。嗯,效果可以。

OpenAI最新大模型GPT-4o体验之Code Copilot AI编程大模型

提供源码

有需要自取。ScoreManager.java - 管理分数的类

import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.Date;import java.util.List;public class ScoreManager {    private List scores;    public ScoreManager() {        scores = new ArrayList();    }    public void addScore(int score) {        scores.add(new ScoreEntry(score, new Date()));        // 按分数降序排列        Collections.sort(scores, new Comparator() {            @Override            public int compare(ScoreEntry s1, ScoreEntry s2) {                return Integer.compare(s2.getScore(), s1.getScore());            }        });    }    public List getScores() {        return scores;    }    public static class ScoreEntry {        private int score;        private Date date;        public ScoreEntry(int score, Date date) {            this.score = score;            this.date = date;        }        public int getScore() {            return score;        }        public String getDate() {            SimpleDateFormat sdf = new SimpleDateFormat(\"yyyy-MM-dd HH:mm:ss\");            return sdf.format(date);        }    }}

SnakeGame.java - 主类

import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;public class SnakeGame extends JFrame {    private GamePanel gamePanel;    private JButton startButton;    private JButton pauseButton;    private JButton scoreButton;    private JLabel scoreLabel;    private ScoreManager scoreManager;    public SnakeGame() {        setTitle(\"贪吃蛇游戏\");        setSize(600, 600);        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);        setLocationRelativeTo(null);        scoreManager = new ScoreManager();        gamePanel = new GamePanel(scoreManager);        startButton = new JButton(\"开始\");        pauseButton = new JButton(\"暂停\");        scoreButton = new JButton(\"显示得分\");        scoreLabel = new JLabel(\"得分: 0\");        // 开始按钮的功能:开始游戏        startButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                gamePanel.startGame();                gamePanel.requestFocusInWindow(); // 使游戏面板获得键盘焦点            }        });        // 暂停按钮的功能:暂停游戏        pauseButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                gamePanel.pauseGame();            }        });        // 显示得分按钮的功能:显示玩家得分列表        scoreButton.addActionListener(new ActionListener() {            public void actionPerformed(ActionEvent e) {                showScoreList();            }        });        // 控制面板包含开始、暂停按钮和得分显示        JPanel controlPanel = new JPanel();        controlPanel.add(startButton);        controlPanel.add(pauseButton);        controlPanel.add(scoreButton);        controlPanel.add(scoreLabel);        add(gamePanel, BorderLayout.CENTER);        add(controlPanel, BorderLayout.SOUTH);        // 注册游戏面板的得分更新监听器        gamePanel.setScoreListener(new GamePanel.ScoreListener() {            @Override            public void scoreUpdated(int score) {                scoreLabel.setText(\"得分: \" + score);            }        });    }    // 显示得分列表    private void showScoreList() {        StringBuilder scoresText = new StringBuilder(\"玩家得分列表:\\n\");        for (ScoreManager.ScoreEntry scoreEntry : scoreManager.getScores()) {            scoresText.append(\"得分: \").append(scoreEntry.getScore())                      .append(\" 时间: \").append(scoreEntry.getDate()).append(\"\\n\");        }        JOptionPane.showMessageDialog(this, scoresText.toString(), \"得分列表\", JOptionPane.INFORMATION_MESSAGE);    }    public static void main(String[] args) {        EventQueue.invokeLater(new Runnable() {            public void run() {                SnakeGame game = new SnakeGame();                game.setVisible(true);            }        });    }}

GamePanel.java - 游戏面板类

import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.KeyAdapter;import java.awt.event.KeyEvent;import java.util.Random;public class GamePanel extends JPanel implements ActionListener {    private final int TILE_SIZE = 20; // 每个格子的大小    private final int WIDTH = 600;    // 游戏面板的宽度    private final int HEIGHT = 600;   // 游戏面板的高度    private final int ALL_TILES = (WIDTH * HEIGHT) / (TILE_SIZE * TILE_SIZE); // 总格子数    private final int[] x = new int[ALL_TILES]; // 贪吃蛇的x坐标    private final int[] y = new int[ALL_TILES]; // 贪吃蛇的y坐标    private int snakeLength; // 贪吃蛇的长度    private int foodX;       // 食物的x坐标    private int foodY;       // 食物的y坐标    private int score;       // 玩家得分    private boolean running = false; // 游戏是否在进行中    private boolean paused = false;  // 游戏是否暂停    private Timer timer;     // 定时器控制游戏速度    private char direction = \'R\'; // 贪吃蛇的初始方向    private ScoreListener scoreListener;    private ScoreManager scoreManager;    public GamePanel(ScoreManager scoreManager) {        this.scoreManager = scoreManager;        setBackground(Color.BLACK);        setFocusable(true);        setPreferredSize(new Dimension(WIDTH, HEIGHT));        addKeyListener(new SnakeKeyAdapter());        initGame();    }    public void setScoreListener(ScoreListener listener) {        this.scoreListener = listener;    }    // 初始化游戏状态    private void initGame() {        snakeLength = 3;        for (int i = 0; i < snakeLength; i++) {            x[i] = 100 - i * TILE_SIZE;            y[i] = 100;        }        placeFood();        score = 0;        if (scoreListener != null) {            scoreListener.scoreUpdated(score);        }        timer = new Timer(140, this);    }    // 开始游戏    public void startGame() {        if (!running) {            running = true;            paused = false;            initGame(); // 重新初始化游戏状态            timer.start();        } else if (paused) {            paused = false;            timer.start();        }    }    // 暂停游戏    public void pauseGame() {        if (running) {            paused = true;            timer.stop();        }    }    // 绘制游戏内容    @Override    protected void paintComponent(Graphics g) {        super.paintComponent(g);        if (running) {            draw(g);        } else {            showGameOver(g);        }    }    // 绘制贪吃蛇和食物    private void draw(Graphics g) {        g.setColor(Color.RED);        g.fillRect(foodX, foodY, TILE_SIZE, TILE_SIZE);        for (int i = 0; i  0; i--) {            x[i] = x[(i - 1)];            y[i] = y[(i - 1)];        }        switch (direction) {            case \'U\':                y[0] -= TILE_SIZE;                break;            case \'D\':                y[0] += TILE_SIZE;                break;            case \'L\':                x[0] -= TILE_SIZE;                break;            case \'R\':                x[0] += TILE_SIZE;                break;        }    }    // 检查贪吃蛇是否碰到自己或边界    private void checkCollision() {        for (int i = snakeLength; i > 0; i--) {            if ((x[0] == x[i]) && (y[0] == y[i])) {                running = false;            }        }        if (x[0] = WIDTH || y[0] = HEIGHT) {            running = false;        }        if (!running) {            timer.stop();        }    }    // 随机放置食物,并确保食物不与蛇重叠    private void placeFood() {        boolean valid;        do {            valid = true;            int r = (int) (Math.random() * (WIDTH / TILE_SIZE));            foodX = ((r * TILE_SIZE));            r = (int) (Math.random() * (HEIGHT / TILE_SIZE));            foodY = ((r * TILE_SIZE));            for (int i = 0; i < snakeLength; i++) {                if (x[i] == foodX && y[i] == foodY) {                    valid = false;                    break;                }            }        } while (!valid);    }    // 每次定时器触发时调用    @Override    public void actionPerformed(ActionEvent e) {        if (running && !paused) {            checkFoodCollision();            checkCollision();            move();        }        repaint();    }    // 键盘事件处理,控制贪吃蛇的方向和重新开始游戏    private class SnakeKeyAdapter extends KeyAdapter {        @Override        public void keyPressed(KeyEvent e) {            int key = e.getKeyCode();            if (key == KeyEvent.VK_SPACE && !running) {                startGame();            }            if ((key == KeyEvent.VK_LEFT) && (direction != \'R\')) {                direction = \'L\';            }            if ((key == KeyEvent.VK_RIGHT) && (direction != \'L\')) {                direction = \'R\';            }            if ((key == KeyEvent.VK_UP) && (direction != \'D\')) {                direction = \'U\';            }            if ((key == KeyEvent.VK_DOWN) && (direction != \'U\')) {                direction = \'D\';            }        }    }    // 定义得分监听器接口    public interface ScoreListener {        void scoreUpdated(int score);    }}

三、感受

好用的功能太多太多,我就不在这个一一列举了,有兴趣的可以自行尝试。