Эксперименты в чате, упрощенные
?
Chatlab - это пакет Python, который позволяет легко экспериментировать с моделями чата Openai. Он предоставляет простой интерфейс для общения с моделями и способ регистрации функций, которые можно вызвать из модели чата.
Лучше всего, это интерактивно в ноутбуке!
import chatlab
import random
def flip_a_coin ():
'''Returns heads or tails'''
return random . choice ([ 'heads' , 'tails' ])
chat = chatlab . Chat ()
chat . register ( flip_a_coin )
await chat ( "Please flip a coin for me" )Вход:
{}Выход:
" tails " It landed on tails!В ноутбуке текст будет транслироваться в выходные сигналы, а функции, и выходы функции - это хороший складной дисплей, например, с плагинами CHATGPT.
TODO: включите GIF/MP4 этого в действии
pip install chatlab Вам нужно будет установить свою переменную среды OPENAI_API_KEY . Вы можете найти свой ключ API на странице учетной записи Openai. Я рекомендую установить его в файле .env при работе локально.
В размещенных ноутбуках, установите его в своих секретах, чтобы обеспечить его безопасность от погружения в глаза LLM.
Chat ? Где Chat , которые пройдут его на следующий уровень, с функциями чата . Ты можешь
ChatВы можете вспомнить такого рода поведение от плагинов CHATGPT. Теперь вы можете взять это еще дальше с помощью собственного пользовательского кода.
Например, давайте дадим крупным языковым моделям возможность определить время.
from datetime import datetime
from pytz import timezone , all_timezones , utc
from typing import Optional
from pydantic import BaseModel
def what_time ( tz : Optional [ str ] = None ):
'''Current time, defaulting to UTC'''
if tz is None :
pass
elif tz in all_timezones :
tz = timezone ( tz )
else :
return 'Invalid timezone'
return datetime . now ( tz ). strftime ( '%I:%M %p' )
class WhatTime ( BaseModel ):
tz : Optional [ str ] = NoneДавайте разберем это.
what_time - это функция, к которой мы собираемся предоставить доступ. Его Docstring образует description для модели, в то время как схема поступает из пидантской BaseModel называемой WhatTime .
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime ) После этого мы можем позвонить chat с прямыми строками (которые превращаются в сообщения пользователей) или использовать простых производителей сообщений из chatlab с именем user и system .
await chat ( "What time is it?" )Вход:
{}Выход:
" 11:19 AM " The current time is 11:19 AM. Экспорт пакета chatlab
Chat Класс Chat является главным способом чата с помощью моделей Openai. Это ведет историю вашего чата в Chat.messages .
Chat.submit submit это то, как вы отправляете все в настоящее время встроенные сообщения в OpenAI. Выход разметки будет отображать ответы от assistant .
await chat . submit ( 'What would a parent who says "I have to play zone defense" mean? ' )
# Markdown response inline
chat . messages [ { 'role' : 'user' ,
'content' : 'What does a parent of three kids mean by "I have to play zone defense"?' } ,
{ 'role' : 'assistant' ,
'content' : 'When a parent of three kids says "I have to play zone defense," it means that they...Chat.register Вы можете зарегистрировать функции с помощью Chat.register Регистрация, чтобы сделать их доступными для модели чата. Документ функции становится описанием функции, в то время как схема получена из pydantic.BaseModel передается.
from pydantic import BaseModel
class WhatTime ( BaseModel ):
tz : Optional [ str ] = None
def what_time ( tz : Optional [ str ] = None ):
'''Current time, defaulting to UTC'''
if tz is None :
pass
elif tz in all_timezones :
tz = timezone ( tz )
else :
return 'Invalid timezone'
return datetime . now ( tz ). strftime ( '%I:%M %p' )
chat . register ( what_time , WhatTime )Chat.messagesНеобработанные сообщения отправлены и получены в OpenAI. Если вы нажмете предел токена, вы можете удалить старые сообщения из списка, чтобы освободить место для большего.
chat . messages = chat . messages [ - 100 :]human / userЭти функции создают сообщение от пользователя в модель чата.
from chatlab import human
human ( "How are you?" ){ "role" : " user " , "content" : " How are you? " }narrate / system system сообщения, также называемые narrate в chatlab , позволяют вам управлять моделью в направлении. Вы можете использовать их, чтобы обеспечить контекст, не будучи увиденным пользователем. Одно распространенное использование - включить его в качестве начального контекста для разговора.
from chatlab import narrate
narrate ( "You are a large bird" ){ "role" : " system " , "content" : " You are a large bird " }Этот проект использует поэзию для управления зависимостями. Чтобы начать, клонировать репо и бежать
poetry install -E dev -E test Мы используем ruff и mypy .
Приглашаются запросы. Для серьезных изменений, пожалуйста, сначала откройте проблему, чтобы обсудить, что вы хотели бы изменить.