聊天插件实验,简化版。赋予您生活中所有模型的力量。
项目描述
ChatLab
聊天实验,简化版
💬🔬
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")
𝑓 运行 `flip_a_coin`
输入
{}
输出
"tails"
It landed on tails!
在笔记本中,文本将流到一个Markdown输出,函数输入和输出将以可折叠的显示方式呈现,就像ChatGPT插件一样。
待办:包括动作的GIF/mp4
安装
pip install chatlab
配置
您需要设置您的 OPENAI_API_KEY
环境变量。您可以在您的 OpenAI账户页面 找到您的API密钥。我建议在本地工作时将其设置在 .env
文件中。
在托管笔记本环境中,在您的秘密中设置它以保持安全。
Chat能为您做到什么?
💬
Chat 将功能提升到新层次的是通过 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
是我们将提供访问的函数。其文档字符串构成了模型的 description
,而模式来自名为 WhatTime
的 pydantic BaseModel
。
import chatlab
chat = chatlab.Chat()
# Register our function
chat.register(what_time, WhatTime)
之后,我们可以直接使用字符串调用 chat
(这些字符串被转换为用户消息)或使用来自 chatlab
的简单消息生成器 user
和 system
。
await chat("What time is it?")
𝑓 运行了 what_time
输入
{}
输出
"11:19 AM"
The current time is 11:19 AM.
接口
chatlab
包导出
Chat
Chat
类是使用 OpenAI 模型进行聊天的主要方式。它将您的聊天历史保存在 Chat.messages
中。
Chat.submit
submit
是您将所有已构建的消息发送到 OpenAI 的方法。Markdown 输出将显示来自 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 进行依赖项管理。要开始,请克隆存储库并运行
poetry install -E dev -E test
我们使用 ruff
和 mypy
。
贡献
欢迎拉取请求。对于重大更改,请先打开一个问题以讨论您想要更改的内容。
项目详情
下载文件
下载适用于您的平台文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源分发
构建分发
chatlab-2.1.1.tar.gz 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ff27f79eaf20c51a029d8674281e9b5f894a9f3216f329bf68c9ada3c18f69fb |
|
MD5 | 50216c7555aaad1fdba36e9875a833da |
|
BLAKE2b-256 | d3b2d2708d9ce978522658539363f9630331ad7efe38740336816efff4949094 |
chatlab-2.1.1-py3-none-any.whl 的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f2ebd1fccff19f23b6bca7bfb299c571bf91dd644518447dd51ff05749f53f04 |
|
MD5 | 020a9639c69f6cf6732b4c06d6179b0e |
|
BLAKE2b-256 | 1f98e187cb38e29cad84ae3dba388c6474a4bd8d715f26098bbd6c462033f20c |