Copilot(이전의 Bing Chat)용 Python 클라이언트(시드니라고도 함)
메모
비공식 고객입니다.
Sydney.py를 설치하려면 다음 명령을 실행하세요.
pip install sydney-py
또는 시를 사용하는 경우:
poetry add sydney-py
팁
Copilot과의 최상의 호환성을 보장하려면 최신 버전의 Sydney.py를 사용하고 있는지 확인하세요.
Sydney.py를 사용하려면 먼저 Copilot 웹 페이지에서 모든 쿠키를 추출해야 합니다. 이 쿠키는 Copilot API에 대한 귀하의 요청을 인증하는 데 사용됩니다.
쿠키를 얻으려면 Microsoft Edge에서 다음 단계를 따르세요.
F12
누르거나 채팅 대화 상자를 마우스 오른쪽 버튼으로 클릭하고 Inspect
선택).Network
탭을 선택합니다.create?bundleVersion=XYZ
라는 요청을 찾아 클릭합니다.Cookie:
필드 뒤의 전체 값을 복사합니다.그런 다음 이를 셸에서 환경 변수로 설정합니다.
export BING_COOKIES= < your-cookies >
또는 Python 코드에서:
os . environ [ "BING_COOKIES" ] = "<your-cookies>"
팁
일부 지역에서는 쿠키 사용이 필요하지 않으며, 이 경우 위 지침을 건너뛸 수 있습니다.
팁
Cookie-Editor
확장을 사용하여 쿠키를 Header String
형식으로 내보내고 동일한 방식으로 설정할 수도 있습니다.
중요한
쿠키가 필요한 지역의 경우 Verifying
메시지가 포함된 상자가 나타날 때까지 Copilot에 수동으로 메시지를 쓰는 것이 좋습니다. 그런 다음 Success!
메시지. 이 단계가 없으면 Sydney.py가 CaptchaChallenge
오류로 인해 실패할 수 있습니다.
Sydney.py를 사용하여 Copilot용 CLI 클라이언트를 쉽게 생성할 수 있습니다.
import asyncio
from sydney import SydneyClient
async def main () -> None :
async with SydneyClient () as sydney :
while True :
prompt = input ( "You: " )
if prompt == "!reset" :
await sydney . reset_conversation ()
continue
elif prompt == "!exit" :
break
print ( "Sydney: " , end = "" , flush = True )
async for response in sydney . ask_stream ( prompt ):
print ( response , end = "" , flush = True )
print ( " n " )
if __name__ == "__main__" :
asyncio . run ( main ())
시드니 클라이언트를 생성하고 대화를 시작하는 Copilot과의 연결을 초기화할 수 있습니다.
sydney = SydneyClient ()
await sydney . start_conversation ()
# Conversation
await sydney . close_conversation ()
또는 async with
문을 사용하여 코드를 간결하게 유지할 수 있습니다.
async with SydneyClient () as sydney :
# Conversation
시드니 클라이언트를 생성할 때 대화 스타일을 설정할 수 있습니다.
sydney = SydneyClient ( style = "creative" )
사용 가능한 옵션은 creative
, balanced
및 precise
입니다.
고객이 이전 대화를 잊어버리도록 대화를 재설정할 수 있습니다. 새 클라이언트를 만들지 않고도 대화 스타일을 변경할 수도 있습니다.
async with SydneyClient () as sydney :
# Conversation
await sydney . reset_conversation ( style = "creative" )
Copilot에 질문을 하고 (선택적으로) 결과에 인용을 포함할 수 있습니다.
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , citations = True )
print ( response )
응답 토큰을 스트리밍할 수도 있습니다.
async with SydneyClient () as sydney :
async for response in sydney . ask_stream ( "When was Bing Chat released?" , citations = True ):
print ( response , end = "" , flush = True )
두 버전의 ask
메소드 모두 동일한 매개변수를 지원합니다.
이미지에 대한 URL 또는 로컬 이미지 파일 경로를 첨부 파일로 제공할 수도 있으며, 이는 프롬프트와 함께 입력으로 사용됩니다.
async with SydneyClient () as sydney :
response = await sydney . ask ( "What does this picture show?" , attachment = "<image-url-or-path>" )
print ( response )
프롬프트와 함께 사용할 추가 컨텍스트로 웹 페이지의 콘텐츠를 제공할 수도 있습니다.
async with SydneyClient () as sydney :
response = await sydney . ask ( "Describe the webpage" , context = "<web-page-source>" )
print ( response )
Copilot이 결과에 사용할 정보를 웹에서 검색할 수 있는지 확인할 수 있습니다.
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , search = False )
print ( response )
웹 검색은 기본적으로 활성화되어 있습니다.
메모
응답이 스트리밍되는 동안에는 웹 검색을 비활성화할 수 없습니다.
특정 작업이나 대화에 적합한 특수 버전의 Copilot을 사용할 수 있습니다.
async with SydneyClient ( persona = "travel" ) as sydney :
response = await sydney . ask ( "Tourist attractions in Sydney" )
print ( response )
persona
매개변수에 사용 가능한 옵션은 다음과 같습니다.
copilot
travel
cooking
fitness
기본적으로 Sydney.py는 copilot
페르소나를 사용합니다.
Copilot에 이메일, 기사, 아이디어 등과 같은 다양한 유형의 콘텐츠를 작성하도록 요청할 수 있습니다.
async with SydneyClient () as sydney :
response = await sydney . compose ( "Why Python is a great language" , format = "ideas" )
print ( response )
응답 토큰을 스트리밍할 수도 있습니다.
async with SydneyClient () as sydney :
async for response in sydney . compose_stream ( "Why Python is a great language" , format = "ideas" ):
print ( response , end = "" , flush = True )
tone
매개변수에 사용할 수 있는 기본 옵션은 다음과 같습니다.
professional
casual
enthusiastic
informational
funny
tone
매개변수에 다른 값을 제공하는 것도 가능합니다.
format
매개변수에 사용 가능한 옵션은 다음과 같습니다.
paragraph
email
blogpost
ideas
length
매개변수에 사용 가능한 옵션은 다음과 같습니다.
short
medium
long
compose
메소드의 두 버전 모두 동일한 매개변수를 지원합니다.
텍스트 답변과 함께 Copilot에서 생성된 제안된 사용자 응답을 받을 수도 있습니다. ask
, ask_stream
둘 다 이 기능을 지원합니다:
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . ask ( "When was Bing Chat released?" , suggestions = True )
if suggested_responses :
print ( "Suggestions:" )
for suggestion in suggested_responses :
print ( suggestion )
또한 compose
및 compose_stream
도 있습니다.
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . compose (
"Why Python is a great language" , format = "ideas" , suggestions = True
)
if suggested_responses :
print ( "Suggestions:" )
for suggestion in suggested_responses :
print ( suggestion )
메모
제안된 사용자 응답은 제안 매개변수가 true인 경우에만 반환됩니다. 그렇지 않으면 모든 ask
및 compose
메서드는 응답만 반환합니다.
메모
presents 매개변수와 함께 ask_stream
또는 compose_stream
메소드를 사용하는 경우 마지막으로 반환된 제안 사용자 응답에만 값이 포함될 수 있습니다. 이전의 모든 반복에 대해 제안된 사용자 응답은 None
입니다.
제안된 응답이나 기타 프롬프트를 사용하여 compose
결과를 개선하거나 변경할 수도 있습니다.
async with SydneyClient () as sydney :
response , suggested_responses = await sydney . compose (
prompt = "Why Python is a great language" , format = "ideas" , suggestions = True ,
)
response , suggested_responses = await sydney . compose (
prompt = suggested_responses [ 0 ], format = "ideas" , suggestions = True
)
print ( response )
텍스트 답변 대신 Copilot에서 제공되는 원시 JSON 응답을 받을 수도 있습니다. ask
compose
모두 이 기능을 지원합니다.
async with SydneyClient () as sydney :
response = await sydney . ask ( "When was Bing Chat released?" , raw = True )
print ( response )
현재 클라이언트와 이루어진 모든 기존 대화를 수신할 수도 있습니다.
async with SydneyClient () as sydney :
response = await sydney . get_conversations ()
print ( response )
문제가 발생하면 Sydney.py에서 다음 예외 중 하나가 발생할 수 있습니다.
예외 | 의미 | 해결책 |
---|---|---|
NoConnectionException | Copilot에 대한 연결을 찾을 수 없습니다. | 다시 해 보다 |
ConnectionTimeoutException | Copilot 연결 시도가 시간 초과되었습니다. | 다시 해 보다 |
NoResponseException | Copilot에서 응답이 반환되지 않았습니다. | 다시 시도하거나 새 쿠키를 사용하십시오. |
ThrottledRequestException | 요청이 제한되었습니다. | 기다렸다가 다시 시도하세요. |
CaptchaChallengeException | 보안 문자 문제를 해결해야합니다 | 새로운 쿠키 사용 |
ConversationLimitException | N개 메시지의 대화 한도에 도달했습니다. | 새로운 대화 시작 |
CreateConversationException | 대화를 만들지 못했습니다. | 다시 시도하거나 새 쿠키를 사용하십시오. |
GetConversationsException | 대화를 가져오지 못했습니다. | 다시 해 보다 |
더 자세한 문서와 옵션은 코드 독스트링을 참조하세요.
이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하세요.