聊天实验,简化
?
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 。
欢迎拉动请求。对于重大更改,请先开设一个问题,以讨论您想更改的内容。