채팅 실험, 단순화
?
ChatLab은 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 S가 무엇을 할 수 있습니까 ? 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 은 우리가 액세스 할 수있는 기능입니다. 스키마는 WhatTime 이라는 Pydantic BaseModel 에서 나오는 동안 모델에 대한 description 형성합니다.
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로 보내는 방법입니다. 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 와 함께 함수를 등록하여 Chat 모델에 사용할 수 있도록 기능을 등록 할 수 있습니다. 함수의 문서는 스키마가 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 chatlab 에서 narrate 라고도하는 system 메시지를 사용하면 모델을 방향으로 조종 할 수 있습니다. 이를 사용하여 사용자가 보지 않고 컨텍스트를 제공 할 수 있습니다. 일반적인 용도 중 하나는 대화의 초기 컨텍스트로 포함시키는 것입니다.
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 사용합니다.
풀 요청을 환영합니다. 주요 변경 사항을 위해 먼저 문제를 열어 변경하고 싶은 것을 논의하십시오.