OpenAIってたまに見るけどなにものなの?

先日紹介したAIについてもう少し深掘りしていきましょう。今回は、AIについて調べたりしているとよく目にするOpenAIについて書いていきます。

OpenAIとは

OpenAIは、2015年に非営利団体として設立されました。AIの発展が社会に与える影響を慎重に考慮していました。一般的に人間よりも賢いAIシステムである汎用人工知能(AGI)が全人類に利益をもたらすようにすることを長期的な目標とされています。2019年には、一部の事業が営利法人化されOpenAI LPとしての活動が強化されました。

OpenAIの代表的な技術

GPTシリーズ

文章を生成してくれるAIです。ChatGPTはチャット上で、テキストによるやり取りができます。ChatGPTでは下記のようなユースケースがあります

  • 問合せ対応
  • 情報収集
  • コーディング

問合せ対応

「顧客からの問い合わせ」や「社内問合せ」の対応にChatGPTが活用できます。

ある企業では社内GPTとして「社内の問合せの対応」に使っています。

AIに自社の社内規定やFAQをを学習させ、社内で問い合わせにChatGPTを設置します。するとわざわざ社内の担当者まで問い合わせしなくても、疑問を解決することでできるようになります。

情報収集

検索を行うことで、情報を返してくれます。例えばですが、「強いポケモンの構築」と質問を行います。すると下記のような回答が返ってきました。

強いポケモンの構築を考える際には、

いくつかの重要な要素を考慮する必要があります。バトルの種類やメタゲーム(流行)によって最適なポケモンが変わりますが、基本的な考え方をいくつか紹介します。
1. タイプのバランス
ポケモンのタイプのバランスは非常に重要です。攻撃面と防御面の両方で強力なタイプを組み合わせると効果的です。例えば、「ドラゴン」タイプは強力ですが、「氷」や「フェアリー」タイプに弱いため、それらの弱点を補えるポケモンをチームに入れることが大切です。
2. 耐久性と火力のバランス
攻撃力が高いポケモンばかりだと、耐久性が足りない場合に倒されやすくなります。一方で、耐久力だけに偏ると、ダメージを与えられないため時間がかかりすぎます。攻撃と防御(または特防)をバランスよく組み合わせることが重要です。

コーディング

作りたいアプリの内容やプログラミング言語を指定することで具体的なソースを書いて表示してくれます。

コード例
import javax.swing.; import java.awt.;
import java.awt.event.; import java.io.;

public class MemoApp {
private JFrame frame;
private JTextArea textArea;
private JButton saveButton;
private JButton loadButton;
private JButton clearButton;
private JFileChooser fileChooser;

public static void main(String[] args) {
    SwingUtilities.invokeLater(() -> new MemoApp().initialize());
}

public void initialize() {
    frame = new JFrame("Memo App");
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    frame.setSize(400, 400);

    // Text area for memo input
    textArea = new JTextArea();
    textArea.setFont(new Font("Arial", Font.PLAIN, 16));
    JScrollPane scrollPane = new JScrollPane(textArea);

    // Buttons
    saveButton = new JButton("Save");
    loadButton = new JButton("Load");
    clearButton = new JButton("Clear");

    // Add action listeners to buttons
    saveButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            saveMemo();
        }
    });

    loadButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            loadMemo();
        }
    });

    clearButton.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            clearMemo();
        }
    });

    // Layout
    JPanel buttonPanel = new JPanel();
    buttonPanel.setLayout(new FlowLayout());
    buttonPanel.add(saveButton);
    buttonPanel.add(loadButton);
    buttonPanel.add(clearButton);

    frame.getContentPane().setLayout(new BorderLayout());
    frame.getContentPane().add(scrollPane, BorderLayout.CENTER);
    frame.getContentPane().add(buttonPanel, BorderLayout.SOUTH);

    fileChooser = new JFileChooser();

    frame.setVisible(true);
}

// Method to save memo to file
private void saveMemo() {
    int returnValue = fileChooser.showSaveDialog(frame);
    if (returnValue == JFileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        try (BufferedWriter writer = new BufferedWriter(new FileWriter(file))) {
            writer.write(textArea.getText());
            JOptionPane.showMessageDialog(frame, "Memo saved successfully!");
        } catch (IOException e) {
            JOptionPane.showMessageDialog(frame, "Error saving memo!");
        }
    }
}

// Method to load memo from file
private void loadMemo() {
    int returnValue = fileChooser.showOpenDialog(frame);
    if (returnValue == JFileChooser.APPROVE_OPTION) {
        File file = fileChooser.getSelectedFile();
        try (BufferedReader reader = new BufferedReader(new FileReader(file))) {
            StringBuilder content = new StringBuilder();
            String line;
            while ((line = reader.readLine()) != null) {
                content.append(line).append("\n");
            }
            textArea.setText(content.toString());
            JOptionPane.showMessageDialog(frame, "Memo loaded successfully!");
        } catch (IOException e) {
            JOptionPane.showMessageDialog(frame, "Error loading memo!");
        }
    }
}

// Method to clear the text area
private void clearMemo() {
    textArea.setText("");
}
}

DALL-E

テキストから画像を作成するAIです。自然言語で表現できる幅広い概念のテキストを用いて、イメージから画像を生成します。

現在はDall-E 3がリリースされておりこちらも無料で試せるのでやってみたい方はぜひどうぞ。無料で使うにはアカウントの作成が必要になっています。

ちなみに「可愛い キャラ アニメ」で生成したら下記の画像が作成されました。

Sora

Soraとは、イメージ動画を生成するAIツールとなります。こちらについては、有料版しかないためちょっと試してみるみたいなことはできませんが、ChatGPT Plus($20/月)の契約で使えるようになるので、動画作成している方は1か月だけ契約してみるなどして試してみるとよいかもしれません。

まとめ

今回はOpenAIについて触れていきました。AIについてはこの先もどんどん進化し続けていくため、自らがどうAIを使うかを考えていくことが重要になってくると思います。

独自性の高い作品のヒントを得るには、なかなか自分の環境だけで出していくことは難しいと筆者は考えているため、自分で実際に行って刺激を受けることも大切ですが、AIが作り出す環境を得ることができればこの先くいっぱぐれることはないのではないでしょうか。

コメント

タイトルとURLをコピーしました