long page
»Я Ватник разная политота арабо-израильская война Израиль Палестина ликбез длиннопост много букаф
Ликбез по арабо-израильским войнам от востоковеда Марии Кича
Сурс: https://t.me/kief_point/23008
Итак, поехали. Израиль и арабские государства: кто, когда и сколько раз на кого напал.
Наверно, каждый, кто интересуется Ближним Востоком, арабо-израильским конфликтом или современной историей и политикой, слышал, что арабские государства всегда первыми нападали на маленький Израиль, а тот героически отбивался. Но правда ли это?
1️. Есть ли границы у Израиля?
Чтобы ответить на данный вопрос, необходимо понимать, в каких границах Государство Израиль существовало в разные периоды и прежде всего — в каких границах оно было провозглашено; ведь считается, что сразу после этого его атаковали арабские армии. О контексте тех событий, (https://t.me/kief_point/20482) а также об уровне и численности арабских военных (https://t.me/kief_point/19369) мы уже говорили. Сейчас же рассмотрим вопрос израильских границ.
Один из парадоксальных моментов заключается в следующем: многие исследователи и политические обозреватели, — в частности, убеждённые критики Израиля, — уверены, что он никогда не определял свои границы. Этот странный тезис повторялся настолько часто, что перешёл в категорию «общего знания». Вот лишь несколько примеров.
Британский историк Ави Шлаим говорил:
«Линии перемирия [установленные в результате соглашений с арабскими государствами по итогам Первой арабо-израильской войны] — единственные международно признанные границы, которые когда-либо были у Израиля». (http://www.mepc.org/journal/middle-east-policy-archives/interview-avi-shlaim)
Американский юрист-международник Джон Уитбэк утверждал, что Израиль не хочет ограничивать себя в расширении и присвоении палестинских земель: «Израиль никогда не определял свои собственные границы, данный акт обязательно наложил бы на них ограничения». (http://counterpunch.org/2014/10/15/one-and-only-one-road-to-peace-for-israel-and-palestine/)
По словам известного израильского журналиста и правозащитника Ури Авнери «С самого начала, в первый день своего существования Государство Израиль отказалось установить свои границы». (http://www.counterpunch.org/2014/10/13/crusaders-and-zionists/)
Логично предположить, что, если сионистское руководство приняло План раздела Палестины — резолюцию 181 ГА ООН (1947), — то оно согласилось и с границами еврейского государства, очерченными наряду с границами арабского государства. Соответственно, Израиль должен был появиться в границах, указанных ООН. На сайте израильского правительства рассказывается о том, как Давид Бен-Гурион не хотел упоминать границы в Декларации независимости, ибо готовился овладеть землёй, предназначенной для арабского государства:
«Мы приняли резолюцию ООН, но арабы — нет. Они готовятся начать с нами войну. Если мы победим их и захватим Западную Галилею или территорию по обе стороны дороги в Иерусалим, эти районы станут частью [еврейского] государства. Почему мы должны обязывать себя признавать границы, которые в любом случае не приемлют арабы?»
Предложение Бен-Гуриона было принято путём голосования — которое и породило заблуждение о том, что «Израиль никогда не определял свои границы». Однако в итоговом варианте Декларации независимости Израиля резолюция 181 ГА ООН упоминается несколько раз. Основываясь на Плане раздела Палестины, Декларация не говорит прямо о принятии границ, определённых ООН. Конечно, новое государство провозглашается лишь один раз, а границы могут меняться, — но всё же есть документы, которые чётко и официально определили границы Израиля.
План раздела Палестины (1947) с линиями перемирия после Первой арабо-израильской войны (1949).
2️. Израиль признаёт свои границы.
Без границ Израиль (как и любое другое политико-правовое образование) не мог быть признан государством другими субъектами международного права — об этом говорили здравый смысл и Конвенция Монтевидео (1933). (https://t.me/kief_point/19718)
Первыми Израиль признали Соединённые Штаты Америки. Сохранилось письмо Элияху Эпштейна (представителя Еврейского агентства в Вашингтоне), адресованное президенту США Гарри Трумэну 14 мая 1948 г.:
«Мой дорогой господин Президент,
имею честь уведомить вас, что Государство Израиль провозглашено независимой республикой в границах, утверждённых Генеральной Ассамблеей Организации Объединённых Наций в её Резолюции от 29 ноября 1947 года, и что Временному правительству поручено взять на себя права и обязанности правительства по сохранению закона и порядка в пределах границ Израиля, по защите государства от внешней агрессии и по выполнению обязательств Израиля перед другими странами мира в соответствии с международным правом.
Акт о независимости вступит в силу через минуту после шести часов вечера 14 мая 1948 года по вашингтонскому времени.
Полностью осознавая глубокие узы симпатии, которые существовали и укреплялись на протяжении последних тридцати лет между правительством Соединённых Штатов и еврейским народом Палестины, я был уполномочен Временным правительством нового государства направить это послание и выразить надежду, что ваше правительство признает Израиль и примет его в сообщество наций.
С глубоким уважением к вам,
Элиаху Эпштейн,
агент Временного правительства Израиля.»
Было очевидно, что США не признают Израиль, если тот не обозначит свои границы. Эпштейну пришлось объясняться с разными американскими чиновниками по поводу территориальных вопросов.
Советник Трумэна Кларк Клиффорд помог Эпштейну составить письмо с просьбой о признании. Позже в мемуарах он рассказал, как наставлял Эпштейна:
«Особенно важно ни на что не претендовать за пределами границ, очерченных в резолюции ООН».
(https://jcpa.org/article/president-truman%E2%80%99s-decision-to-recognize-israel/)
Эпштейн отправил телеграмму Моше Чертоку (впоследствии Шарету) — министру иностранных дел Временного правительства в Тель-Авиве, — в которой сообщил, что сотрудник Госдепа Лой Хендерсон специально звонил, чтобы уточнить границы нового государства, и рекомендовал установить их в соответствии с резолюцией ООН. Также Хендерсон спросил, хочет ли еврейское государство заполучить какую-либо территорию, отличную от предоставленной ООН (Первая арабо-израильская война уже шла, но это был первый этап, на котором евреи боролись с палестинскими арабами). Эпштейн ответил:
«Нет, и любая территория, захваченная до достижения мира, будет возвращена арабскому государству».
Всё это — и особенно письмо Эпштейна Трумэну — очень важные, но весьма малоизвестные документы.
Итак, 14 мая 1948 г. Государство Израиль было провозглашено на основе Плана раздела Палестины и в границах, указанных в данном Плане.
США тоже признали Израиль именно в этих границах (положительный ответ Трумэна был опубликован 15 мая 1948 г.). (https://archive.org/details/departmentofstatx1848unit/page/673/mode/1up)
Вторым государством, признавшим Израиль, стал СССР (17 мая 1948 г.).
Все последующие государства, рассматривавшие вопрос о признании Израиля, тоже знали, в каких границах он располагается.
Письмо Элияху Эпштейна президенту США Гарри Трумэну.3️. Зачем пять арабских армий вторглись в Палестину.
Израиль был создан в разгар войны, бушевавшей между евреями и палестинскими арабами. В 00:01 15 мая 1948 г., когда Декларация независимости Израиля вступила в силу, еврейские ополченцы уже сражались за его пределами — на территории, выделенной ООН для арабского государства. В ту же ночь вооружённые силы Трансиордании, Египта, Ирака, Сирии и Ливана вошли в Палестину, — и начался второй этап Первой арабо-израильской войны.
ООН знала об арабской интервенции и её причинах. К 14 мая 1948 г. в Палестине полным ходом шла Накба (этническая чистка палестинских арабов, проживавших на территории, выделенной будущему еврейскому государству) (https://t.me/kief_point/18930) — по разным данным, к тому моменту от 250 000 до 350 000 местных арабов бежали, были убиты или изгнаны из своих домов. Генеральный секретарь Лиги арабских государств (ЛАГ) Аззам-паша направил ГА ООН документ, котором говорилось, что вторжение проводится с целью восстановления закона и порядка и предотвращения распространения беспорядков, царящих в Палестине, … и прекращения дальнейшего кровопролития.
Это крайне любопытный, грамотно составленный и почти неизвестный документ. Вот пара цитат.
«Когда 29 ноября 1947 г. Генеральная Ассамблея вынесла свои рекомендации относительно решения палестинской проблемы на основе раздела, предусматривающего создание двух государств, арабского и еврейского, с международным режимом опеки над городом Иерусалим, арабские государства предупредили, что такое решение наносит ущерб правам арабских жителей Палестины на независимость и противоречит демократическим принципам и Лиге Наций, а также Уставу Организации Объединённых Наций. Затем арабы отвергли такую схему, заявив, что она не может быть реализована мирными средствами и что её навязывание силой представляет угрозу миру и безопасности в этом регионе.
Опасения арабских государств оказались вполне обоснованными, поскольку беспорядки, о которых они предупреждали, вскоре охватили страну, и произошёл вооружённый конфликт между двумя её народами, которые начали воевать друг против друга и проливать кровь друг друга.
Мир и порядок в Палестине были полностью нарушены, и в результате еврейской агрессии более четверти миллиона арабского населения были вынуждены покинуть свои дома и эмигрировать в соседние арабские страны. Происходящие события в Палестине обнажили скрытые агрессивные намерения сионистов и их империалистические мотивы, что ясно проявилось в их действиях, совершённых против мирных арабов и жителей деревень Дейр-Ясин, Тверии и других мест, а также в их посягательстве на здания и своды неприкосновенных консульских кодексов, проявившемся в нападении на консульство в Иерусалиме».
Документ заканчивается так:
«Настоящим правительства арабских государств подтверждают на данном этапе точку зрения, которая неоднократно высказывалась ими в предыдущих случаях, таких как Лондонская конференция и, главным образом, в Организации Объединённых Наций: единственным справедливым решением проблемы Палестины является создание Объединённого государства Палестина, основанного на демократических принципах, которое позволит всем его жителям пользоваться равенством перед законом и которое гарантировало бы всем меньшинствам гарантии, предусмотренные во всех демократических конституционных государствах, обеспечивающих в то же время полная защита и свободный доступ к Святым местам. Арабские государства решительно и неоднократно заявляют, что их вторжение в Палестину продиктовано исключительно соображениями и целями, изложенными выше, и что они не руководствуются никакими другими мотивами вообще. Поэтому они уверены, что их действия получат поддержку Организации Объединённых Наций как направленные на продвижение целей и идеалов Организации Объединённых Наций, изложенных в её Уставе».
По иронии, документ ЛАГ перекликается с Карлсбадской резолюцией (1921), принятой на XII Всемирном сионистском конгрессе. Сионисты не любят о ней вспоминать, но это уже совсем другая история.
4️. Что в реальности?
Если ливанцы символически участвовали в конфликте в символическом количестве, то трансиорданцы, египтяне, сирийцы и иракцы заслуживают большего внимания.
Первоначальные арабы собирались вторгнуться в Северную Палестину и дойти до Хайфы, но король Трансиордании Абдалла I заявил, что его войска направятся в Рамаллу, Наблус и Хеврон — на территорию, которую позже назовут Западным берегом реки Иордан. Казалось, что Абдалла избегал войны с израильтянами, воздерживаясь от входа в районы, выделенные им ООН, — например, в Нетанию и Хадеру. Поведение Абдаллы вызвало подозрение о его сговоре с сионистами. Позже Ави Шлаим написал книгу о том, что этот сговор имел место, и Трансиордания заняла Западный берег с согласия Израиля, чтобы предотвратить создание палестинского арабского государства. Бои между трансиорданским Арабским легионом и ЦАХАЛ в подавляющем большинстве случаев были результатом израильского наступления с целью захвата территории сверх той, которая была отведена ООН еврейскому государству, — и которую Абдалла намеревался сохранить в соответствии со сделкой с сионистским руководством.
Каир, заподозривший Абдаллу в сговоре с Израилем, изменил свои планы. Первоначально египтяне хотели перебросить свои силы вдоль побережья в сторону Газы, Исдуда и, возможно, Тель-Авива. Но теперь, обеспокоенные амбициями Абдаллы, они добавили второй маршрут вторжения — через Беэр-Шеву на восток в район Хеврона, дабы эту землю не заняли трансиорданцы. Однако к концу мая египтяне выдохлись на обоих направлениях. На данном этапе израильтяне столкнулись только с иракскими и сирийскими войсками в долине реки Иордан — также за пределами территории, выделенной еврейскому государству ООН.
Иракские подразделения, базировались в Калькили (Западный берег) и успешно обороняли от израильтян Дженин. В противном случае этот город пополнил бы список Накбы из 500 с лишним арабских населённых пунктов, стёртых израильтянами с лица земли либо опустошённых и потом занятых евреями, как это произошло с вышеупомянутым Исдудом (сейчас Ашдод).
Итак, ЛАГ или отдельные арабские государства не объявляли войну Израилю. Вопреки распространённому мнению, арабские армии не напали на Израиль — они вторглись на территорию, предназначенную ООН для палестинского арабского государства с целью защиты местного населения, которое подвергалось этнической чистке. Большая часть боевых действий велась за пределами Израиля. ООН была предупреждена об интервенции и её мотивах и сочла действия арабов соответствующими ст. 51 Устава ООН (https://www.un.org/ru/about-us/un-charter/full-text) (Египет, Трансиордания, Ирак и Сирия ещё не являлись членами Организации, основанной всего три года назад, но были региональными игроками, теоретически способными повлиять на ситуацию). В резолюциях ООН за 1948-1949 гг., касающихся конфликта, содержатся только призывы к миру в Палестине, без упоминания уже существовавшего Израиля; арабская сторона не осуждается и не объявляется агрессором.
5️. Как Израиль комментировал ситуацию и что он делал?
18 мая 1948 г. — через три дня после того, как арабские силы вторглись на территорию, отведённую ООН для палестинского арабского государства, — произошла переписка между ООН (желавшей узнать, что творится в Палестине) и израильскими властями. (https://www.un.org/unispal/document/auto-insert-182380/) Она процитирована ниже в формате «вопрос ООН — ответ Израиля».
ООН обратилась к «еврейским властям в Палестине», но представитель Израиля подчеркнул, что еврейское государство уже провозглашено и имеет свои органы власти с соответствующими полномочиями, в первую очередь — Временное правительство.
1️.
UN — Какие районы Палестины вы фактически контролируете в настоящее время?
IL — В настоящее время — всю территорию еврейского государства, как определено в Резолюции Генеральной Ассамблеи от 29 ноября 1947 г. Кроме того, Временное правительство осуществляет контроль над городом Яффо; (https://t.me/kief_point/21988) Северо-Западной Галилеей, включая Акко, Зиб, Базу и еврейские поселения вплоть до ливанской границы; полосой территории вдоль дороги из Хильды в Иерусалим; почти всем Новым Иерусалимом и Еврейским кварталом в стенах Старого города Иерусалима. Вышеуказанные районы за пределами территории Государства Израиль находятся под контролем военных властей Государства Израиль, которые строго придерживаются международных норм в этом отношении. Южный Негев — это необитаемая пустыня, над которой никогда не существовало эффективной власти.
2️.
UN — Есть ли у вас вооружённые силы, действующие в районах (посёлках, округах) Палестины, где арабы составляют большинство, или за пределами Палестины?
IL — Мы рассматриваем территорию Израиля как единое целое с еврейским большинством. Как указывалось выше, правительство Государства Израиль действует в частях Палестины за пределами территории Государства Израиль; в тех частях, которые, за заметным исключением Иерусалима, ранее по большей части составляли арабское большинство. Однако эти районы в основном покинуты их арабским населением. Ни одна территория за пределами Палестины не находится под еврейской оккупацией, но еврейские силы время от времени совершали вылазки за границы Государства Израиль по настоятельным военным причинам и как часть, по сути, оборонительного плана.
3️.
UN — Если да, то на каком основании вы пытаетесь оправдать подобные операции?
IL — Вышеуказанные операции в районах за пределами государства Израиль оправданы по следующим основаниям:
1. В целях отражения агрессии и в рамках нашего, по сути, оборонительного плана, чтобы предотвратить использование этих районов в качестве баз для нападений на Государство Израиль.
2. В целях защиты еврейского населения, дорожного движения и экономической жизни, включая защиту тех еврейских поселений за пределами территории государства, где из-за отсутствия какой-либо должным образом учреждённой власти и невыполнения гарантий, предусмотренных Планом Генеральной Ассамблеи, жизнь и имущество находятся в непосредственной опасности. Аналогичные соображения применимы в отсутствие какого-либо международного закона о городе Иерусалиме к еврейскому району города.
4️.
UN — Организовали ли вы въезд в Палестину в ближайшем будущем мужчин призывного возраста из-за пределов Палестины? Если да, то каковы цифры и откуда они прибывают?
IL — Принимались и принимаются меры для въезда в Палестину еврейских иммигрантов всех возрастов и обоих полов из различных стран в соответствии с общепризнанной целью Государства Израиль открыть свои ворота для крупномасштабной иммиграции. Государство Израиль рассматривает вопрос иммиграции как вопрос, находящийся в пределах его внутренней юрисдикции.
Иными словами, Израиль не скрывал, что хочет видеть у себя еврейское большинство (согласно Плану раздела Палестины, в еврейском государстве проживало бы только 55% евреев). (https://t.me/kief_point/16640) Изгнание арабов давно обсуждалось сионистами; о нём говорил ещё Теодор Герцль. В итоге эти намерения были оформлены в виде плана «Далет», (https://t.me/kief_point/16654) а их реализация положила начало Накбе. (https://t.me/kief_point/18930) Арабские войска, якобы напавшие на Израиль, на самом деле вторглись на территорию, предназначенную ООН для палестинского арабского государства, и атаковали сионистов, которые уже не первый месяц осуществляли этническую чистку местного арабского населения. В 1948 г. все об этом знали. Поэтому Израиль не запросил помощь ни у ООН, ни у США. Он знал, что в таких условиях никакой помощи не будет.
Добившись признания и объявив линии раздела согласно плану ООН своими границами, израильское Временное правительство уже 20 мая 1948 г.— менее чем через неделю после этого — решило, что «Израиль не будет уважать линии раздела».
3 июня премьер-министр и министр обороны Бен-Гурион заявил в докладе Временному правительству: «Всё пространство Государства Израиль, выделенное нам по условиям резолюции ООН, находится в наших руках, и мы завоевали несколько важных районов за пределами этих границ… Мы будем продолжать постоянное наступление, которое не будет ограничено границами еврейского государства».
(https://www.gov.il/en/Departments/General/report-to-the-provisional-government-by-pm-ben-gurion)
Тем самым Бен-Гурион подтвердил как существование границ Израиля, так и его намерение захватить территорию за их пределами. В ходе войны Израиль продолжал захватывать арабские земли, пока боевые действия не прекратились после перемирия 1949 г.
В итоге Израиль уже в 1949 г. захватил и оккупировал земли в Палестине за пределами своих государственных границ — и, естественно, это не было законной аннексией. Израиль распространил свою власть на эти территории вплоть до демаркационной линии перемирия. При этом в соглашении о его перемирии с арабскими государствами сказано:
«Демаркационная линия перемирия ни в каком смысле не должна толковаться как политическая или территориальная граница».
(https://unispal.un.org/pdfs/AAC25IS37.pdf)
Поскольку Израиль не намерен возвращать эти территории, арабы называют их украденными. По Плану раздела ООН израильская территория составила около 55% Подмандатной Палестины; ещё 23% — украденная земля; оставшиеся 22% — Западный берег и сектор Газа. Украденная земля включает города Акко, Аль-Маджал (Ашкелон), (https://t.me/kief_point/21609) Яффу, Назарет, Рамле, Беэр-Шеву, Лидду и Западный Иерусалим. Все они, кроме последнего, согласно плану ООН отводились для арабского государства, поскольку являлись крупными арабскими центрами.
Когда сегодня арабы говорят, (https://t.me/kief_point/8298) что готовы признать Израиль в границах 1967 г. (до Шестидневной войны), это значит, что они согласны забыть про землю, украденную в 1949 г. (между прочим, почти 1/4 территории Палестины).
6️. Правда ли, что арабские государства всегда первыми нападали на Израиль, начиная тем самым очередную арабо-израильскую войну?
Разобравшись с границами Израиля, рассмотрим данный вопрос, проанализировав каждую войну.
1️. Первая арабо-израильская война (1947-1949). О ней говорилось выше. (https://t.me/kief_point/23014) В Израиле она называется Войной за независимость. Но за независимость от кого? От британцев, которые ушли даже раньше запланированного — при том, что сроки мандата и так были указаны? От палестинских арабов, которые подверглись Накбе? От арабских армий, которые атаковали сионистов, осуществлявших этническую чистку местного арабского населения за пределами еврейского государства — и на территории, выделенной ООН для арабского государства?
2️. Суэцкий кризис (1956-1957). Тогда Израиль, действуя заодно с Францией и Великобританией, вторгся в Египет, чтобы восстановить контроль западных держав над Суэцким каналом и сместить египетского президента Гамаля Абделя Насера.
3️. Шестидневная война (1967). Израиль нанёс арабским государствам «превентивный удар» в целях «самообороны» и захватил принадлежавшие им территории. (https://t.me/kief_point/21103) Примечательно, что сначала израильский дипломат Абба Эббан заявил в ООН о нападении Египта на еврейское государство; правда выяснилась позже — и тогда израильтяне стали аппелировать к самозащите. Кроме того, Израиль давно планировал войну и на протяжении ряда лет даже готовил чиновников для управления территориями, которые собирался захватить. Однако Израиль никогда не аннексировал захваченные земли в порядке, установленном международным правом, — поэтому они считались и считаются оккупированными. (https://www.haaretz.com/israel-news/2021-06-03/ty-article/.highlight/israel-said-67-land-conquests-werent-planned-declassified-documents-say-otherwise/0000017f-e738-df5f-a17f-fffe3ac80000)
(Предвосхищая ваши вопросы про иорданскую аннексию Западного берега и египетское управление сектором Газа. Это отдельная тема, которую надо раскрывать специально. Дела там обстоят иначе, чем в случае с Израилем).
4️. Война на истощение (1967-1970) между Израилем и Египтом. 22 ноября 1967 г. СБ ООН единогласно принял резолюцию 242, в которой, среди прочего, потребовал вывода ЦАХАЛ с территорий оккупированных во время Шестидневной войны. Египет, в отличие от Израиля, согласился исполнять резолюцию. Израиль не вывел войска с Синайского полуострова — и тогда египетские силы начали обстреливать подразделения ЦАХАЛ, дислоцированные на своей территории, которая была оккупирована Израилем.
5️. Война Судного дня (1973) началась с того, что арабские государства попытались отбить у Израиля свои же территории, которые тот захватил во время Шестидневной войны (1967) и не отдавал, нарушая требования резолюции 242 СБ ООН. Арабские армии не напали на Израиль — они вторглись на свои земли, оккупированные Израилем, и вступили в бой с размещёнными там силами ЦАХАЛ: иорданская армия вторглась на Западный берег реки Иордан; египетская армия — на Синайский полуостров; сирийская армия — на Голанские высоты.
6️. Первая ливанская война (1982-1985) подробно рассматривалась тут. (https://t.me/kief_point/22995) Если кратко, то Израиль вторгся на территорию Ливана, поскольку решил это сделать, преследуя собственные цели; для оправдания вторжения он устраивал провокации и в итоге выбрал предлог, не имевший отношения к той ситуации.
Итого мы имеем шесть арабо-израильский войн, развязанных Израилем — либо при его активном участии, как в случае с Суэцким кризисом, — всего за 35 лет (с 1947 г. по 1982 г.). Конечно, это лишь часть арабо-израильского конфликта. (https://t.me/kief_point/22043)
Первым и до сих пор единственным лидером арабского государства, который напал на Израиль, — хоть и не в контексте арабо-израильской войны, — стал иракский президент Саддам Хусейн, приказавший бомбить еврейское государство в январе 1991 г. Правда, до этого ВВС ЦАХАЛ уничтожили ядерный реактор «Осирак» на территории Ирака (1981). Впрочем, это уже совсем другая история…
нейронные сети ChatGPT gpt локальные языковые модели google colab длиннопост SillyTavern LM вайфу
Руководство по общению с нейровайфу. Часть 2. Глупая Таверна.
Привет всем кто в теме и кто только присоединился!
Предыдущийпост https://joyreactor.cc/post/5733950
Рассказывал о том, как быстро и просто запустить локальную языковую модель на удалённом сервере google colab и начать общение нейротян.
Но теперь настало время взяться за дело серьёзно, встречайте:
Простое руководство по SillyTavern.
(автор не гарантирует, что написанное строчкой выше правда)
Предварительнаяустановка
1. Переходим поссылке https://nodejs.org/en/download искачиваем LTS версию. Нам подойдет и она.
2. Когда скачали,запускаем установку.
3. (опционально)Перейдите по ссылке https://git-scm.com/downloads и скачайте Git,для упрощения обновлений и прочего.
4. (опционально) Переходимпо ссылке https://www.python.org/downloads/ и качаем питонпоследней версии. Не то чтобы он был вообще нужен для установки таверны, но разуж мы начали идти по пути LLM, не стоит останавливаться надостигнутом!
5. Установка завершена.Переходим к самой таверне.
Установка SillyTavern.
С использованием Git:1. Выбираем папку, нажимаем ПКМ, git bash HERE.
2. Вводим в консоль git clone https://github.com/SillyTavern/SillyTavern
3. Для того что бы установить staging branch добавляем после ссылки -b staging
4. Всё устанавливается
Без использования Git:
1. Переходим поссылке https://github.com/SillyTavern/SillyTavern/tree/staging
2. Нажимаем на зеленую кнопку Code и download zip
3. Теперь, когда мы скачали наш ZIP архив (не важно, стейджинг ли этоверсия, или обычный релиз)Мы берем и открываем ZIP (архив) и достаем оттуда папку, в любое удобное намместо.
*Лично я предпочитаю именно этот метод, сохраняя вотдельной папке каждую новую версию таверны, начиная с момента, когдасуществовала только оригинальная TavernAI, ещё храню в каждойпапке полный набор актуальных на тот момент скриптов, промптов и персонажей.Зачем? Вдруг пригодится!
Запуск таверны
После этого мы запускаем start.bat
Когда мы запустили start.bat, мы видим NPM install. Нам нужно дождатьсяустановки, затем оно само запустится.
*Если вам пишет missing module название модуля, то нужно ввестикоманду npm install название модуля, и так пока вы не установитевсе нужные.
Когда установка закончится, автоматически откроется вкладка браузера с интерфейсом таверны.При первом запуске вы увидите сообщение
Которое предложит вам заранее ввести имя, по которому к вам будет обращаться модель. Можете оставить его как есть и представиться кем угодно походу беседы, либо ввести своё имя, но тогда к вам всегда будут обращаться по нему. (Старые модели вроде Pygmalionвместо User, определяют пользователя как You)
*Также вам предложит включит упрощённую версию интерфейса. НЕ ДЕЛАЙТЕ ЭТОГО!Раз уж вы решили идти дальше пути текстовых нейросетей то привыкайте страдать!
Подключение к нейросети.
Теперь настало время изучить иконки расположенный сверху
Но делать это мы будем не по порядку, начнём с главного, источника. Тавернаэто очень удобный, но всё-же фронтенд. Иконка API предлагает нам выбратьоткуда конкретно мы будем черпать нейросетевые ресурсы.
Рассмотрим основные пункты, представляющие практический интерес.
1. Text Completion.
Первый пункт «TextCompletion» Предлагает вам подключить к вашей таверне в качестве бекэнда text-generation-webui.
О том, как его запустить написано в предыдущем посте. Ссылка на колаб: https://colab.research.google.com/drive/11U-bC6AxdmMhd3PF9vWZpLdi6LdfnBQ8?usp=sharing
Но прежде чем использовать его как API,убедитесь что отключены google translate и sileroTTS, они будут мешать генерации.
Чтобы подключить запущенный webui к таверне Скопируйте ссылку после строки'OpenAI-compatible API URL:' и вставьте её в 'Server URL'
При запуске локально дефолтный адрес подключения http://127.0.0.1:5000/api
2. KoboldCPP.
Этот пункт предлагает нам подключить к таверне аналог text-generation-webui,под названием «Koboldcpp»
Главных отличий от предыдущего сабжа два:
- Кобольд предназначен для запуска моделей,оптимизированных для процессора. Сейчас это формат GGUF
- Сильно проще в локальном запуске на Windows. Всегоодин exeфайл,после запуска которого вам предложат выбрать файл модели кнопкой «Browse». Изнастроек для начала можно выставить контекст в размере 4096. Для запуска этогоуже достаточно.У кобольда есть даже свой интерфейс чата, но он сильноуступает как webui так и таверне.
В качестве API URL в таверне вводим http://127.0.0.1:5001/api
Скачать последнюю версию можно здесь: https://github.com/LostRuins/koboldcpp/releases/
Почитать о разных загрузчиках и прочих вы можете на основнойстранице гитхаб: https://github.com/LostRuins/koboldcpp
Если ваш комп не тянет, есть также колаб: https://colab.research.google.com/github/LostRuins/koboldcpp/blob/concedo/colab.ipynb
Куда же без него.
3. ChatCompletion
Здесь нам предлагается подключиться к APIсоответствующихсервисов, при условии, что у нас есть ключ.
Выбираем поставщика, вводим ключ, радуемся! В целом всёпросто (кроме получения самого ключа)
4. KobaldAIHorde.
Но не печальтесь, если у вас нет ключа к GPT4 Turbo, нам поможет сервис AIHorde https://horde.koboldai.net/
(это не троллинг если что, нет правда!)
Более того, это, пожалуй, самый интересный пункт, потому чтоон позволяет нам сразу, без танцев с бубном, подключиться к языковой модели.
Всё что нам нужно это поставить курсор в поле Модели ивыбрать любую из них:
*Модели из списка работают на аппаратных мощностях участников сообщества и доступны для бесплатного использования! НО когда много людей сидит на одной модели, образуется очередь, а у анонимных подключений приоритет в очередях самый низкий.
Если хотите получить преимущество, регистрируйтесь https://horde.koboldai.net/registerЗа это вам выдадут личный ключ API, который можно будет вбить в таверну. Далее устанавливайте хорду и фармите Кудосы помогая людям, не имеющим мощного железа, приобщаться к нейронкам!
Какая модель лучше вопрос спорный.
Можете, например поизучать этот рейтинг: http://ayumi.m8geil.de/ayumi_bench_v3_results.html
По мне так методика тестирования в Аюми такая себе, но ничего лучше пока не встречал.
При подключении, не забудьте выставить галочку «Уточнить длину ответа в соответствии с возможностями рабочих машин» Иначе получите ошибку, если контекст установленный на сервере будет меньше вашего.
В принципе после этого уже +- можно начинать общение!
Поэтому переходим к обзору основных нюансов общения с нейровайфу.
Песеты настроекгенерации.
Первая из них это параметры генерации модели.
Главное, на что здесь стоит обратить внимание это
1. Длина ответа в токенах – ограничивает размер ответа модели.
2. Размер контекста – сколько текста вы посылаете нейросети при каждом запросе*
* тут стоит сделать небольшое отступление: многие думают, что общение с нейросетью происходит как с человеком. Вы ей что-то пишите – она на это запоминает и учитывает в последующих ответах. Это не совсем так: языковая модель может дать всего один ответ на один запрос. Памяти как таковой ни у одной современной LLM нет в принципе. Так как-же тогда происходить длинная переписка? Очень просто: в качестве запроса модели КАЖДЫЙ РАЗ посылается история всей вашей предыдущей переписки, она обрабатывает всю эту гору текста и отвечает один раз что она обо всём этом думает. Далее этот процесс повторяется, но в запрос включается предыдущий ответ нейросети.
Контекст - это максимальное количество текста, которое модель способна обработать. Если ваша беседа его превысит, таверна автоматически начнет удалять ваши сообщения, начиная с первых, а модель «забывать» с чего всё началось.
Оранжевая пунктирная полоска в чате таверны показывает до какого момента беседа входит в контекст.
3. Температура – один из важнейших параметров, отвечающий за «креативность» модели. Чем он выше, тем более разнообразным и менее адекватным будет ответ модели. Какую температуру, когда выставлять, лучше всего выяснить методом тыка. Но для небольших локальных моделей, как правило подходит температура 0.6-0.8, для более крупных, например, ChatGPT– 0.9-1.
Что же касается остальных параметров, на начальном этапе не стоит уделять им слишком много внимания. Можете подробно прочитать о них в вики таверны.
Всё что нужно знать, это то что они уже должным образом настроены в соответствующих пресетах.
Вы можете попробовать все и выбрать подходящий в зависимости от результатов. Но для начала советую выбрать “simple-proxy-for-tavern”или “Storywriter”, а далее играться с температурой.
Форматирование.
Эти настройки также оказывают очень большое влияние на генерацию, т.к. они определяют в каком виде модель будет получать ваши запросы.
Для локальных моделей часто критически важно выбрать нужное форматирование, от него будет завесить поймёт ли вас модель вообще.
ШаблонRoleplay один из самых универсальных, его понимают как крупные модели, вроде ChatGPT, таки локальные от 30-70В.
Но влокалках всё же стоит выбирать соответствующий им шаблон, это сделает модельгораздо «умнее».
Одним из самых распространённых является Alpaca, просто потому что большинство моделей основаны на ней. Но есть и исключения, список которых вы увидите, открыв вкладку «Предустановки».
Если по названию модели не понятно чьим файньтюном она является, попробуйте найти её страницу на https://huggingface.co/models
Там как правило указано откуда ноги растут.
С основными приготовлениями на этом мы закончили. Теперьпереходим к самому интересному – общению с нейротянами! Основные сопутствующиефишки рассмотрим по ходу дела.
Импорт персонажей.
В таверне уже имеется набор стандартных персонажей.
Вы можете побеседовать и с ними, но, чтобы показать максимум возможностей таверны, лучше сразу перейдем к добавлению новых.
Карточки персонажей можно найти на сайте: https://www.chub.ai/
В поиске находим нужного персонажа и скачиваем PNGфайлдля SillyTavern
https://www.chub.ai/characters/thecentuaro/rin-tohsaka
Кроме того, если есть, скачиваем Expressions ZIP и Лорбук (внизу вкладки Tavern, после описания карточки)Карточку персонажа кидаем в SillyTavern-staging\public\characters
Туда же извлекаем изображения из архива Expressions, папку не переименовываем, она должна соответствовать имени персонажа.
Лорбук же кидаем в SillyTavern-staging\public\worlds
Теперь можно обновить вкладку с таверной и нажать на иконку с появившимся персонажем.
Но при открытии мы увидим что чат на английском, а Рин обращается к нам как к Юзеру.
Чтобы исправить жмем на иконку Расширения и открываем вкладку Chat Translation
Здесь выбираем пункт Translation both, Googleи Русский язык.
Затем идём во вкладку «Миры» и выбираем Fate, чтобы беседа была более каноничной.
«Лордбуки» это сборники кратких сведений о мире или персонажах, в дополнение к основной карточке. Интересны они тем что, в отличие от карточки, количество записей в лорбуках не ограничено. Просто, когда речь аходит о каком-то событии или термине, название которого совпадает с записью влорбуке, таверна добавляет эту запись к промпту, чтобы модель понимала о чём идёт речь.
Я пару раз использовал лорбук для того чтобы написать персонажей с очень сложной предысторией, на десяток тысяч токенов) и это прекрасно работало при контексте всего в 4к.
Кроме того лорбук вполне можно использовать как замену «памяти» бота, записывая в него занимательные факты из вашего общения. Минус в том, что делать это надовручную.
Теперь заглянем в раздел Управления персоной. Здесь вы можете как описать свою личность, так и притвориться кем-то другим. Лично я всегда предпочитаю писать правдивое описание себя, ведь именно так вас будет воспринимать бот.
Кроме того, можно выбрать (или сгенерировать, об этом позже) подходящий фон беседы
По большей части всё – можно беседовать!
Стрелка справа от ответа персонажа это «свайп», при нажатии на неё сгенерится другой ответ, но вы всегда можете вернуться к предыдущему. Карандашик позволяет отредактировать любую реплику, как свою, так и бота в любой момент. Это очень полезно, если вдруг появилось желание разыграть другую сцену или просто что-то слегка подправить.
При нажатии на иконку персонажа, вы увидите его описание, которое точно также можно изменить в любой момент.
Что-ж, это был необходимый минимум, для начала использования таверны.
Но для тех, кому этого мало, продолжаем!
Особые возможности.
Преобразования вашей речи в текст. (STT) (понадобится микрофон)
Открываем расширения, вкладку «Download Extensions &Assets» и жмём кнопку подключения, соглашаясь с всплывающим сообщением.
Появится длинный список из разного рода улучшалок. У всех есть описания и их все вы можете попробовать самостоятельно, но я советую начать с «Speech Recognition»
После установки в расширениях появится новая вкладка. В ней нужно выбрать «браузер» и Русский язык. После этого рядом с кнопкой отправки сообщения появится также иконка микрофона, нажимаем её и говорим.
Преобразование текста в речь (TTS)
Дальше будет чуть сложнее, потому что теперь мы дадим голос ещё и нашей вайфу!
Для этого понадобится настроить вкладку расширений TTS.
Здесь интереснее всего 2 пункта: Silero и XTTSv2.
Результат работы Silero вы могли слышать в колабе text-generation-webui.Но в таверне подключение этого модуля на русском языке вызывает некоторое количество боли, так что как-нибудь в другой раз.
Поэтому подключаем https://github.com/daswer123/xtts-api-server
Вы можете установить его локально, следуя инструкции, но для начала лучше попробовать колаб: https://colab.research.google.com/drive/1b-X3q5miwYLVMuiH_T73odMO8cbtICEY?usp=sharing#scrollTo=nLS9QDgnrUmR
В настройках в строке Model_source: выбираем «apiManual»
Затем просто запускаем все ячейки по очереди сверху вниз, пока в консоли последней не получим строчку
После этого прокручиваем консоль в самое начало и ищем ссылку
Именно её нужно вставить в таверну:
После этого настройки должны выглядеть так. Если поля с выбором голоса персонажа не появилось, перезагрузите страницу и снова войдите в чат с персонажем. Ползунки можно пробовать двигать, чтобы получить другой результат.
Голос для персонажа нужно выбрать обязательно, иначе он не заговорит.
Запустить озвучку фразы можно кнопкой
Но если вы настроили всё как на картинке, генерация будет идти автоматически после ответа.
Эмоции и сумморайз.
Теперь мы наконец-то можем общаться в живую! Но как-жевизуальный контакт? Разумеется, это тоже не обошли стороной, именно для этого мы с вами скачивали спрайты эмоций в папку с персонажем!
Для этого нам понадобится запустить отдельный сервер расширений.
Итак, идём на гитхаб https://github.com/SillyTavern/SillyTavern-Extras
Лучше поставить всё это локально следуя инструкции на странице (что гораздо удобнее для повседневного использования).
Но попробовать можно и в колабе (не опять, а снова)
https://colab.research.google.com/github/SillyTavern/SillyTavern/blob/release/colab/GPU.ipynb
Ничего не меняем, запускаем последнюю ячейку и ждём ссылки
Ссылку вставляем в нижнее поле окна Расширения
Затем для удобства, рекомендую включить !!!РЕЖИМ ВАЙФУ!!! В настройках визуала.И вот, мы уже можем общаться лицом к лицу! Алилуйа!
Спрайты персонажа будут меняться в зависимости от его «эмоций». Кроме того, они могут быть анимированы (но встречаются такие редко).
Также стоит упомянуть о вкладке Summarize в расширениях.
Это очень полезная штука, увеличивающая «память» бота. Работает это так: в какой-то момент, пока размер контекста ещё не превышен, модель кратко конспектирует суть происходящего. Затем этот «конспект» будет отправляться вместо не входящей в контекст истории чата.
Есть два варианта конспектирования: С использованием основной модели (будет генерироваться как дополнительная реплика, с той же скоростью), либо с использованием специальной модели в сервере расширений (но тогда этот сервер должен быть запущен и подключен).
Групповые чаты
Но чего-то не хватает… Правильно, зачем общаться с одной аниме-тян, когда можно общаться с двумя?!
Выбираем опции в левом нижнем углу чата и жмём «превратить в группу»
Переходим в меню персонажа и в настройках открываем вкладку «добавить членов»
После чего составляем нужный нам для досуга список.
Генерация иллюстраций к чату.
Так, что же ещё нам может понадобиться? Конечно же иллюстрация происходящего с помощью Stable Diffusion!
На выбор есть несколько вариантов. Если у вас подключен сервер API, вы можете сгенерировать картинку через встроенный SDмодуль. Также можно подключить через APIсобственныйзапущенный StableDiffusion.Но мне больше нравится вариант StableHorde,т.к. он всегда доступен и не требует дополнительных модулей.
Жмём на волшебную палочку в нижней левой части чата и выбираем Generate Inage и далее один из пунктов
Теперь ждём пока не получим результат!Это может быть неплохой заменой спрайтам эмоций, превращающей чат в графическую новеллу.
Но учтите, что перед генерацией картинки, ваша текстовая модель сгенерирует для неё промпт. Так что всё это может занять дополнительное время.
Конечно в таверне ещё много фишек и настроек, но пока думаю стоит на этом остановиться.
Спасибо всем, кто дочитал до этого момента не пролистывая!
P.S. Если вы, чтобы не ждать очереди в Хорде, запустили LLMв колабе Text Generation WebUI, затем чтобы не устанавливать TTS, запустили в колабе и его, и в конце то же самое сделали с сервером дополнений, то поздравляю, у вас фуллхаус!