Как использовать gemini api в приложении?

Я чайник и пытаюсь потрогать gemini api. Делаю по инструкции.

Зашел в ai studio получил новый
Сохранил этот ключ в константу key

Далее функция

func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, option.WithAPIKey(key))
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()
    model := client.GenerativeModel(modelName)
    chat := model.StartChat()
    test := "hello. Are you working now?"
    resp, err := chat.SendMessage(ctx, genai.Text(test))
    if err != nil {
        log.Fatal(err)
    }
    log.Println(resp.PromptFeedback)
}

Получаю nil в ответ nil. А как добиться от этого кода ответа на поставленный вопрос?


Ответы (1 шт):

Автор решения: Quester
func main() {
    ctx := context.Background()
    client, err := genai.NewClient(ctx, option.WithAPIKey(key))
    if err != nil {
        log.Fatal(err)
    }
    defer client.Close()
    model := client.GenerativeModel(modelName)
    chat := model.StartChat()
    chat.History = []*genai.Content{
        {
            Parts: []genai.Part{
                genai.Text("Hello i am Maksim"),
            },
            Role: "user",
        },
        {
            Parts: []genai.Part{
                genai.Text("Nice to meet you Maksim"),
            },
            Role: "model",
        },
    }
    test := os.Args[1]
    iter := chat.SendMessageStream(ctx, genai.Text(test))
    for {
        resp, err := iter.Next()
        if err != nil {
            log.Fatal(err)
        }
        if err == iterator.Done {
            break
        }
        for _, cand := range resp.Candidates {
            if cand.Content != nil {
                for _, part := range cand.Content.Parts {
                    fmt.Println(part)
                }
            }
        }
    }
}

Работает

→ Ссылка