from simpleaichat import AIChat
ai = AIChat ( system = "Write a fancy GitHub README based on the user-provided project name." )
ai ( "simpleaichat" )Simpleaichat-это пакет Python для легко взаимодействовать с приложениями чата, такими как CHATGPT и GPT-4, с надежными функциями и минимальной сложностью кода. Этот инструмент имеет много функций, оптимизированных для работы с CHATGPT как можно быстрее и как можно более дешево, но все же гораздо более способно к современным трюкам искусственного интеллекта, чем большинство реализаций:
Вот несколько забавных, взломанных примеров о том, как работает Simpleaichat:
Simpleaichat может быть установлен из PYPI:
pip3 install simpleaichatВы можете очень быстро демо-применения в чате с Simpleaichat! Сначала вам нужно будет получить ключ API OpenAI, а затем с одной строкой кода:
from simpleaichat import AIChat
AIChat ( api_key = "sk-..." )И с этим вы будете втянуты непосредственно в интерактивный чат!

Этот чат ИИ имитирует поведение веб -приложения Openai, но на вашем местном компьютере!
Вы также можете передать ключ API, сохранив его в файле .env с полем OPENAI_API_KEY в рабочем каталоге (рекомендуется) или установив переменную среды OPENAI_API_KEY непосредственно на ключ API.
Но как насчет создания собственных пользовательских разговоров? Вот где все становится весело. Просто введите любого человека, места или вещи, вымышленного или научно -популярного, с которым вы хотите пообщаться!
AIChat ( "GLaDOS" ) # assuming API key loaded via methods above 
Но это еще не все! Вы можете настроить именно то, как они ведут себя тоже с помощью дополнительных команд!
AIChat ( "GLaDOS" , "Speak in the style of a Seinfeld monologue" )
AIChat ( "Ronald McDonald" , "Speak using only emoji" )
Нужна немедленно социализация? После установки Simpleaichat вы также можете запустить эти чаты непосредственно с командной строки!
simpleaichat
simpleaichat " GlaDOS "
simpleaichat " GLaDOS " " Speak in the style of a Seinfeld monologue " Хитрость работы с новыми приложениями, основанными на чате, которые не были доступны с более ранними итерациями GPT-3, является добавлением подсказки системы: другой класс подсказки, который направляет поведение ИИ на протяжении всего разговора. На самом деле, демонстрации чата, выше, на самом деле используют системные трюки за кадров за кулисами! OpenAI также выпустил официальное руководство по передовой практике системы для создания приложений для искусственного интеллекта.
Для разработчиков вы можете создать программный экземпляр AIChat , явно указав системную подсказку или отключив консоли.
ai = AIChat ( system = "You are a helpful assistant." )
ai = AIChat ( console = False ) # same as above Вы также можете передать параметр model , такой как model="gpt-4" если у вас есть доступ к GPT-4, или model="gpt-3.5-turbo-16k" для более крупного контекста WhatGPT.
Затем вы можете подписать новый класс ai с помощью пользовательского ввода, и он вернет и сохранит ответ от Chatgpt:
response = ai ( "What is the capital of California?" )
print ( response ) The capital of California is Sacramento.
В качестве альтернативы, вы можете транслировать ответы с помощью токена с генератором, если сама генерация текста слишком медленная:
for chunk in ai . stream ( "What is the capital of California?" , params = { "max_tokens" : 5 }):
response_td = chunk [ "response" ] # dict contains "delta" for the new token and "response"
print ( response_td ) The
The capital
The capital of
The capital of California
The capital of California is
Дальнейшие вызовы в объекте ai будут продолжать чат, автоматически включая предыдущую информацию из разговора.
response = ai ( "When was it founded?" )
print ( response ) Sacramento was founded on February 27, 1850.
Вы также можете сохранить сеансы чата (как CSV или JSON) и загрузить их позже. Ключ API не сохранен, поэтому вам придется предоставить это при загрузке.
ai . save_session () # CSV, will only save messages
ai . save_session ( format = "json" , minify = True ) # JSON
ai . load_session ( "my.csv" )
ai . load_session ( "my.json" )Большое количество популярных венчурных приложений, финансируемых CATGPT, фактически не использует часть «чата» модели. Вместо этого они просто используют подсказку системы/первого пользователя в качестве формы программирования естественного языка. Вы можете эмулировать это поведение, передавая новую систему приглашения при генерации текста, а не сохраняя полученные сообщения.
Класс AIChat является менеджером чата , что означает, что вы можете иметь несколько независимых чатов или функций! Приведенные выше примеры используют сеанс по умолчанию, но вы можете создать новые, указав id при вызове ai .
json = '{"title": "An array of integers.", "array": [-1, 0, 1]}'
functions = [
"Format the user-provided JSON as YAML." ,
"Write a limerick based on the user-provided JSON." ,
"Translate the user-provided JSON from English to French."
]
params = { "temperature" : 0.0 , "max_tokens" : 100 } # a temperature of 0.0 is deterministic
# We namespace the function by `id` so it doesn't affect other chats.
# Settings set during session creation will apply to all generations from the session,
# but you can change them per-generation, as is the case with the `system` prompt here.
ai = AIChat ( id = "function" , params = params , save_messages = False )
for function in functions :
output = ai ( json , id = "function" , system = function )
print ( output )title: "An array of integers."
array:
- -1
- 0
- 1An array of integers so neat,
With values that can't be beat,
From negative to positive one,
It's a range that's quite fun,
This JSON is really quite sweet!{"titre": "Un tableau d'entiers.", "tableau": [-1, 0, 1]} Более новые версии CHATGPT также поддерживают «вызов функции», но реальная польза от этой функции является возможность для CHATGPT поддерживать структурированный ввод и/или выход, что теперь открывает широкий спектр приложений! Simpleaichat оптимизирует рабочий процесс, позволяющий просто передавать input_schema и/или output_schema .
Вы можете построить схему, используя пиджантскую базоделью.
from pydantic import BaseModel , Field
ai = AIChat (
console = False ,
save_messages = False , # with schema I/O, messages are never saved
model = "gpt-3.5-turbo-0613" ,
params = { "temperature" : 0.0 },
)
class get_event_metadata ( BaseModel ):
"""Event information"""
description : str = Field ( description = "Description of event" )
city : str = Field ( description = "City where event occured" )
year : int = Field ( description = "Year when event occured" )
month : str = Field ( description = "Month when event occured" )
# returns a dict, with keys ordered as in the schema
ai ( "First iPhone announcement" , output_schema = get_event_metadata ){'description': 'The first iPhone was announced by Apple Inc.',
'city': 'San Francisco',
'year': 2007,
'month': 'January'}См. TTRPG Generator Notebook для более сложной демонстрации возможностей схемы.
Одним из последних аспектов взаимодействия с CHATGPT является возможность для модели использовать «инструменты». Как популяризируется Langchain, инструменты позволяют модели решать, когда использовать пользовательские функции, которые могут выходить за рамки только самого искусственного интеллекта в чате, например, получая недавнюю информацию из Интернета, отсутствующую в данных обучения AI в чате. Этот рабочий процесс аналогичен плагинам CHATGPT.
Расположение вывода модели для вызова инструментов, как правило, требует ряда синханиганов, но Simpleaichat использует аккуратный трюк, чтобы сделать его быстрым и надежным! Кроме того, указанные инструменты возвращают context для Chatgpt, который можно использовать для его окончательного ответа, и инструменты, которые вы указываете, могут вернуть словарь, который вы также можете заполнить произвольными метаданными для отладки и постобработки. Каждое поколение возвращает словарь с помощью response и используемой функции tool , которые можно использовать для настройки рабочих процессов, похожих на агенты в стиле Langchain, например, рекурсивно подающую вход в модель, пока он не определит, что ему не нужно использовать больше инструментов.
Вам нужно будет указать функции с Docstrings, которые дают подсказки для ИИ, чтобы выбрать их:
from simpleaichat . utils import wikipedia_search , wikipedia_search_lookup
# This uses the Wikipedia Search API.
# Results from it are nondeterministic, your mileage will vary.
def search ( query ):
"""Search the internet."""
wiki_matches = wikipedia_search ( query , n = 3 )
return { "context" : ", " . join ( wiki_matches ), "titles" : wiki_matches }
def lookup ( query ):
"""Lookup more information about a topic."""
page = wikipedia_search_lookup ( query , sentences = 3 )
return page
params = { "temperature" : 0.0 , "max_tokens" : 100 }
ai = AIChat ( params = params , console = False )
ai ( "San Francisco tourist attractions" , tools = [ search , lookup ]){'context': "Fisherman's Wharf, San Francisco, Tourist attractions in the United States, Lombard Street (San Francisco)",
'titles': ["Fisherman's Wharf, San Francisco",
'Tourist attractions in the United States',
'Lombard Street (San Francisco)'],
'tool': 'search',
'response': "There are many popular tourist attractions in San Francisco, including Fisherman's Wharf and Lombard Street. Fisherman's Wharf is a bustling waterfront area known for its seafood restaurants, souvenir shops, and sea lion sightings. Lombard Street, on the other hand, is a famous winding street with eight hairpin turns that attract visitors from all over the world. Both of these attractions are must-sees for anyone visiting San Francisco."} ai ( "Lombard Street?" , tools = [ search , lookup ]) {'context': 'Lombard Street is an east–west street in San Francisco, California that is famous for a steep, one-block section with eight hairpin turns. Stretching from The Presidio east to The Embarcadero (with a gap on Telegraph Hill), most of the street's western segment is a major thoroughfare designated as part of U.S. Route 101. The famous one-block section, claimed to be "the crookedest street in the world", is located along the eastern segment in the Russian Hill neighborhood.',
'tool': 'lookup',
'response': 'Lombard Street is a famous street in San Francisco, California known for its steep, one-block section with eight hairpin turns. It stretches from The Presidio to The Embarcadero, with a gap on Telegraph Hill. The western segment of the street is a major thoroughfare designated as part of U.S. Route 101, while the famous one-block section, claimed to be "the crookedest street in the world", is located along the eastern segment in the Russian Hill'}
ai ( "Thanks for your help!" , tools = [ search , lookup ]){'response': "You're welcome! If you have any more questions or need further assistance, feel free to ask.",
'tool': None}while без особого дополнительного кода, плюс с дополнительной выгодой от гораздо большей гибкости, такой как отладка.Макс Вульф (@minimaxir)
Проекты Max по открытым исходным кодам поддерживаются его спонсорами Patreon и Github. Если вы нашли этот проект полезным, любой валютный вклад в Patreon приветствуются и будет использоваться в хорошем творческом использовании.
Грань