PaLM-2 (chat-bison) API is now generally available

Introduction

In the fast-paced world of artificial intelligence, Google continues to push the boundaries of innovation with the release of PaLM-2 (Pathway Language Model) in their Generative AI Studio. This release marks a significant milestone in the development of chat applications, enabling developers to leverage advanced generative AI capabilities. In this article, we will explore the features and implications of Google PaLM-2 for chat applications.

PaLM-2, the latest iteration of the Pattern-Attributed Language Model, represents a breakthrough in chat-based AI technology. It is designed to understand and generate human-like responses in natural language conversations. Powered by deep learning algorithms and trained on vast amounts of text data, PaLM-2 demonstrates remarkable fluency and contextual understanding, making it an invaluable tool for chat application developers.

Google’s PaLM APIs for chat (chat-bison) provide developers with a powerful interface to integrate PaLM-2 into their chat applications. These APIs offer a range of functionalities, including sentiment analysis, language translation, and response generation. By harnessing the power of PaLM-2, developers can create chat applications that deliver more natural, contextually aware responses, thereby enhancing user experiences.

Integration and Usage

You can start use PaLM-2 in Vertex AI, Generative AI Studio like this:

Image description

Developers can interact with the model in a similar way to ChatGPT, initiating conversations and receiving responses:

Image description

API access is also available, allowing developers to integrate PaLM-2 into their applications. For example, in Node.JS, API access can be easily implemented by providing the filename of the Google Service account JSON file obtained from the Cloud Console:

import { JWT } from "google-auth-library";

const API_ENDPOINT = "us-central1-aiplatform.googleapis.com";
const URL = `https://${API_ENDPOINT}/v1/projects/${process.env.GOOGLE_KEY}/locations/us-central1/publishers/google/models/chat-bison@001:predict`;

const getIdToken = async () => {
    const client = new JWT({
        keyFile: "./google.json",
        scopes: ["https://www.googleapis.com/auth/cloud-platform"],
    });
    const idToken = await client.authorize();
    return idToken.access_token;
};

export const getTextPalm = async (prompt, temperature) => {
    const headers = {
        Authorization: `Bearer ` + (await getIdToken()),
        "Content-Type": "application/json",
    };

    const data = {
        instances: [
            {
                context: "",
                examples: [],
                messages: [
                    {
                        author: "user",
                        content: prompt,
                    },
                ],
            },
        ],
        parameters: {
            temperature: temperature || 0.5,
            maxOutputTokens: 1024,
            topP: 0.8,
            topK: 40,
        },
    };

    const response = await fetch(URL, {
        method: "POST",
        headers,
        body: JSON.stringify(data),
    });

    if (!response.ok) {
        console.error(response.statusText);
        throw new Error("Request failed " + response.statusText);
    }

    const result = await response.json();
    return result.predictions[0].candidates[0].content;
};

Currently, PaLM-2 responds only in English, but support for other languages is expected to be added in the near future. The cost of using the PaLM-2 API is relatively affordable at $0.0005 per 1K characters. However, it’s worth noting that Google is currently offering a full discount on the usage fees.

Testing and Impressive Results:

During testing, PaLM-2 demonstrated impressive capabilities, particularly in storytelling. The generated stories produced by PaLM-2 are comparable to results achieved by models like GPT-4.

Как заработать миллион за пять дней с помощью Android

На Хабре часто встречаются статьи со сравнением доходности от разработки под iOS и Android. Обычно они заканчиваются тем, что под iOS разрабатывать в 10 раз выгоднее. С некоторых пор, мне смешно такое читать. Я поделюсь с вами небольшой историей взлета моего приложения (надеюсь, без последующего падения). Уверен, что под iOS ничего подобного не могло бы произойти.

Тип приложения

Конечно, это игра. Массовая, простая. Что еще можно сделать за 5 дней, работая исключительно по вечерам и в свое удовольствие? Возможно, кто-то зарабатывает на серьезных приложениях. Но вложения ресурсов в таких случаях будут в разы больше. Если вы решили делать игру, постарайтесь, чтобы она оказывала первое положительное впечатление хотя бы на 80% пользователей. Это очень хорошо скажется на оценках, а они нам понадобятся в дальнейшем.

Способ монетизации

Забудьте о платных приложениях! В Android Market это не работает. Можно выложить хорошую игру за 1 доллар и ждать месяц пока ее хоть кто-нибудь скачает. Платный рынок плотно оккупирован студиями и качественными приложениями. Поэтому наш выбор — реклама, в моем случае это был AdMob. Доход от рекламы очень стабильный, в отличие от продаж. И самое главное, он прямо пропорционален количеству пользователей. Вообще, рынок Android переживает сейчас взрывной рост, в день приобретается 850 тыс. аппаратов, и люди хотят наполнить их приложениями. В 99% случаях это будет бесплатное ПО.

Платное отключение рекламы

Дайте возможность людям, которые ненавидят рекламу всей душой, отказаться от нее, заплатив небольшую сумму. Для этого придется интегрировать In-app-purchase. Способ с отдельным платным приложением в моем случае не сработал. Советую тщательно отладить restoreTransactions(), чтобы пользователь не терял деньги при очистке данных или смене устройства. В моем случае покупки отказа от рекламы приносят пока 5% дохода.

Графика, музыка — где всё это брать?

Сразу скажу, что писал игру я в одного. Ни музыкантом, ни художником я не являюсь, поэтому всё было скачано из интернета — картинки Google, бесплатные звуки и т.д. Разве что картинку под игровым полем нарисовал один хороший знакомый – пользуясь случаем, передаю ему привет! Основными рабочими инструментами стали Paint.NET и Wave Editor (обе программы бесплатные и весят по 3 Мб). Кстати, в конце я склонялся к разработке в Windows больше, нежели чем в Ubuntu. Как-то там слегка удобнее всё.

Движок, NDK и фрагментация

Объем исходного кода – около тысячи строк на Java. Повторюсь, алгоритм очень прост. Никаких движков при разработке я не использовал. То же касается и NDK. Благодаря этому, игра запускается на большом количестве устройств – в статистике Flurry я вижу 327 разных типов телефонов и планшетов. И даже на нетбуках с x86 процессором она, оказывается, работает. Таким образом, слухи о фрагментации Android оказались сильно преувеличенными. Не запускается или глючит игра только на совсем уж китайских устройствах. Сбойных сессий – 0.14%, ими можно пренебречь. В первых версиях, ошибок было гораздо больше, только в консоль маркета пришло более ста отчетов. Большинство ошибок было исправлено.
Так как игра относится с разряду board game, я применил обычный GridView с изображениями. Анимация выполнена с помощью Handlerи postDelayed(). OpenGLне использовался.

Продвижение

На рекламу игрушки я не потратил ни копейки. Существует масса эффективных и бесплатных способов продвижения. Начал я с анонса в своей ленте Google+. Читателей у меня не так много, ~2000. Несколько раз помогли друзья с репостами. Также, написал в твиттер, спасибо жене, у нее там довольно много фолловеров. На тот момент, у меня было чуть больше тысячи игроков.
Пожалуй, самым главным толчком стала публикация бесплатного обзора на 4PDA. Ни в коем случае не пренебрегайте этой возможностью! Их проект поддержки российских разработчиков — это просто чудо. Несмотря на минусы, которые обзор получил на главной, он принес такое количество пользователей, что теперь я готов заплатить по 100 руб. каждому минусующему 😉 Рейтинг и количество закачек пошли в гору, и мне кажется, что этот процесс уже не остановить.

Маленькие хитрости

Конечно, я применил все знания, полученные на Хабре, спасибо авторам статей. Например, однократный диалог с просьбой оценить игру на маркете. Мой выглядит вот так:
 
Возможно, знатоки НЛП предложат другой вариант, но и этот хорошо работает. Также, рекомендую сразу встроить Scoreloop и аналитику от Flurry. Или вот такой диалог при достижении рекорда, с возможностью поделиться в соц. сетях:
 
Всё это значительно повышает соревновательность и вовлеченность.

Так как насчет миллиона?

Конечно, миллион вы получите не сразу, а в течение нескольких лет. С другой стороны, рублей или долларов? Вопрос интересный. В начале, суточный доход от рекламы удваивался каждые три дня. Затем, скорость уменьшилась. По моим расчетам, каждая закачка приносит один доллар на рекламе в долгосрочной перспективе. Именно поэтому цена запрета рекламы — 0,99$. Сейчас у меня происходит примерно 6000 закачек в сутки. Посмотрим, что будет дальше!