Ответ на вопрос
Спрашивает много источников разом и отдаёт ответ каждого плюс лучший.
Ключ
Вставьте куда угодно и допишите в конец то, что проверяете.
https://monoblock.casa/keys/answer/сам вопрос, обычными словами
Попробовать прямо тут
Вопрос уходит параллельно в Википедию, Викиданные, Викисловарь, DuckDuckGo, на карту OpenStreetMap, в погоду, в курсы валют (166 штук, включая рубль), в научные базы, в каталог книг и в реестры пакетов. Каждый источник отвечает своим полем, отдельно называется лучший ответ и ссылки, которыми его можно проверить. Если sources не указать, ключ смотрит на сам вопрос и решает, кого спрашивать: про город — карту, про валюту — курсы, про пакет — реестры. Моделей тут нет намеренно: бесплатные упираются в лимиты, а их ответ нечем проверить. Выдача поисковиков не скребётся — берутся только источники с открытым интерфейсом, которые сами разрешают к себе ходить.
Вход
| параметр | тип | что это |
|---|---|---|
q * | string | сам вопрос, обычными словами |
sources | string | через запятую: wiki, ddg, wikidata, wiktionary, osm, weather, rates, crossref, arxiv, books, pypi, npm, github; пусто — ключ выберет сам; all — все |
lang | string | ru или en |
Ответ
| поле | тип | что это |
|---|---|---|
ok | boolean | нашлось ли хоть что-то |
answer | string | лучший ответ из всех источников |
source | string | чей это ответ |
asked | string | кого спрашивали |
found | string | кто ответил не пустым |
links | string | ссылки, которыми ответ можно проверить |
wiki | string | Википедия: сводка статьи |
ddg | string | DuckDuckGo: краткая справка |
wikidata | string | Викиданные: что это за сущность |
wiktionary | string | Викисловарь: значение слова |
osm | string | OpenStreetMap: место на карте |
weather | string | погода в этом месте прямо сейчас |
rates | string | курс и пересчёт суммы: 166 валют, включая рубль, гривну, тенге |
crossref | string | научная статья по теме |
arxiv | string | препринт по теме |
books | string | книга из каталога Open Library |
pypi | string | пакет Python |
npm | string | пакет JavaScript |
github | string | репозиторий на GitHub |
error | string | что не так с вопросом, если не так |
dict | string | толкование английского слова: значение, часть речи, транскрипция |
sea | string | море рядом: высота волны, период, температура воды |
history | string | какая погода была в указанный день (дату писать в вопросе) |
flood | string | расход воды в ближайшей реке — грубый признак паводка |
time | string | который час и часовой пояс в этом месте |
country | string | страна: столица, население, валюта, площадь |
steam | string | игра в Steam: цена, платформы |
drug | string | лекарство по данным FDA: для чего, предупреждения |
Позвать из кода
Ставить нечего: везде, кроме C++, хватает стандартной библиотеки. Ответ приходит готовой строкой — разбирать нечего.
curl 'https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2'
import urllib.request
print(urllib.request.urlopen("https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2").read().decode())const answer = await (await fetch("https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2")).text();
console.log(answer);// сборка: g++ main.cpp -lcurl
#include <curl/curl.h>
#include <iostream>
#include <string>
static size_t sink(char* data, size_t size, size_t n, void* out) {
static_cast<std::string*>(out)->append(data, size * n);
return size * n;
}
int main() {
CURL* curl = curl_easy_init();
std::string answer;
curl_easy_setopt(curl, CURLOPT_URL, "https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2");
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, sink);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &answer);
curl_easy_perform(curl);
curl_easy_cleanup(curl);
std::cout << answer << std::endl; // готовая строка, разбирать нечего
}resp, _ := http.Get("https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2")
defer resp.Body.Close()
answer, _ := io.ReadAll(resp.Body)
fmt.Println(string(answer))echo file_get_contents("https://monoblock.casa/keys/answer/%D0%BA%D1%82%D0%BE%20%D1%82%D0%B0%D0%BA%D0%BE%D0%B9%20%D0%9F%D0%B0%D0%B2%D0%B5%D0%BB%20%D0%94%D1%83%D1%80%D0%BE%D0%B2");Нужно одно поле — допишите ?only=ok, придёт только оно. Полный ответ — ?fmt=json, да/нет — ?fmt=bool.
В ассистенте
Инструмент называется answer — просто попросите словами, подставлять параметры ассистент будет сам.
Откуда
Ключи — 13 открытых источников, ни одного платного ключа