聊天實驗,簡化
?
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環境變量。您可以在OpenAI帳戶頁面上找到API密鑰。我建議在本地工作時將其設置在.env文件中。
在託管的筆記本電腦環境中,將其設置在您的秘密中,以防止它免受LLM眼睛的影響。
Chat可以讓您做什麼? Chat s的下一個級別是聊天功能。你可以
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的功能。當WhatTime來自Pydantic BaseModel時,其Docstring構成了模型的description 。
import chatlab
chat = chatlab . Chat ()
# Register our function
chat . register ( what_time , WhatTime )之後,我們可以調用使用直接字符串(已轉入用戶消息)的chat ,也可以使用名為user和system的chatlab的簡單消息製造商。
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中註冊功能,以使其可用於聊天模型。該函數的DocString成為函數的描述,而該架構是從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消息,也稱為chatlab中的narrate ,允許您將模型引導到方向。您可以使用這些來提供上下文,而無需用戶看到上下文。一種常見的用途是將其作為對話的初始上下文。
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 。
歡迎拉動請求。對於重大更改,請先開設一個問題,以討論您想更改的內容。