suchen

Heim  >  Fragen und Antworten  >  Hauptteil

Halten Sie Gespräche mit dem OpenAI API PHP SDK am Laufen

Ich versuche, die Completion()-Methode des OpenAI PHP SDK zu verwenden, um eine Konversation aufrechtzuerhalten.

Aber die KI scheint die Frage, die ich zuvor gestellt habe, vergessen zu haben. Die zweite Eingabeaufforderung wird zufällig beantwortet.

Der Code, den ich für diese beiden Anrufe verwendet habe, lautet wie folgt:

$call1 = $open_ai->completion([
            'model' => 'text-davinci-003', 
            'prompt' => 'How Are You?',

        ]);


        $call2 = $open_ai->completion([
            'model' => 'text-davinci-003', 
            'prompt' => 'What i asked you before?',
        ]);

Was habe ich verpasst? Wie kann ich die Sitzung zwischen diesen beiden Anrufen aktiv halten, damit sich die KI daran erinnert, was ich zuvor gefragt habe?

P粉426906369P粉426906369397 Tage vor801

Antworte allen(1)Ich werde antworten

  • P粉316890884

    P粉3168908842023-11-02 00:08:31

    第二个答案,因为第一个答案没有回答OP的问题。


    基于此 OpenAI Playground 示例,只能通过将两个命令发送到 API 来“询问”“对话”。

    不要认为在收到回复后有办法让对话继续进行。


    考虑这个例子,我们发送以下文本:

    The following is a conversation with an AI assistant.
    
    Human: Hello
    Human: What is 3 * 3?
    AI:
    Human: What did I just asked?
    AI:
    

    我得到的回复是:

    You asked me what 3 * 3 is. The answer is 9.
    

    用于此目的的代码:

    completion([
            'model' => $model,
            'prompt' => $question,
            'temperature' => 0.9,
            'max_tokens' => 150,
            'frequency_penalty' => 0,
            'presence_penalty' => 0.6,
            'stop' => ["\nHuman:", "\nAI:"]
        ]);
        try {
            $json = @json_decode($res);
            foreach ($json->choices as $choice) {
                echo $choice->text . PHP_EOL;
            }
        } catch (Exception $e) {
            var_dump($e);
            return NULL;
        }
    }
    
    $text = <<
    

    注意 stop 数组,该数组引用自 文档

    这似乎让人工智能知道在哪里“读”和在哪里“写”

    如果您从请求中删除该参数,它将返回而不返回答案:

    You asked what 3 times 3 is.
    

    Antwort
    0
  • StornierenAntwort