Dolores 는 사전 학습된 언어 모델로 작업할 때 개발자 경험을 개선하도록 설계된 Python 라이브러리입니다. Dolores는 흥미롭거나 유용한 출력을 생성하는 언어 모델과 상호 작용하기 위한 프롬프트를 제공합니다. 이 라이브러리의 목적은 사용하기 쉬운 예제와 샘플 텍스트를 제공하여 학습 곡선을 단순화하는 것입니다. 또한 언어 모델과의 상호 작용을 위한 품질 프롬프트의 가장 포괄적인 저장소가 되겠다는 더 넓은 목표를 가지고 있습니다.
Westworld의 Dolores Abarnathy의 이름을 따서 명명되었습니다.
$ pip install dolores
Python 인터프리터를 통해 가져오거나 Python 파일로 가져옵니다.
import dolores
dolores.initialize("<YOUR-API-KEY>")
여기에서는 Dolores 클래스 인스턴스의 액세스 가능한 메서드를 통해 openai의 API를 직접 호출할 수 없습니다. 다음은 목록 엔진 API 호출을 호출합니다. 각 API 호출에는 API를 호출하는 데 사용할 수 있는 연관된 메서드 호출이 있습니다.
현재 사용 가능한 엔진을 나열하고 소유자, 가용성 등 각 옵션에 대한 기본 정보를 제공합니다.
dolores.list_engines()
소유자, 가용성 등 엔진에 대한 기본 정보를 제공하는 엔진 인스턴스를 검색합니다.
dolores.retrieve_engine()
Dolores 클래스를 인스턴스화한 후 Open AI API에 대한 후속 클래스는 동일한 엔진 선택 하에 만들어집니다. API 호출에 사용되는 엔진을 변경하기 위해 노출된 메소드가 있습니다.
dolores.set_engine("davinci")
참고: 향후 버전에서는 기존 엔진 유형에 대한 검증이 고려됩니다.
프롬프트를 완료하세요. 이는 GPT-3 API의 주요 엔드포인트입니다. 새 텍스트는 물론, 요청된 경우 각 위치의 각 대체 토큰에 대한 확률도 반환합니다.
요구:
dolores.create_completion("Is the JavaScript programming language better than python?", 20)
응답: (일반 텍스트 응답은 response["choices"][0]["text"] 참조)
JSON: {'id': 'cmpl-kM6MK5dVRvD964MxeyG4AjCy', 'object': 'text_completion', 'created': 1595431739, 'model': 'ada:2020-05-03', 'choices': [{'text': ' in a far away place', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
'in a far away place'
?
이름 | ~ 안에 | 유형 | 필수의 | 설명 |
---|---|---|---|---|
엔진 | 몸 | 끈 | 진실 | 엔진 ID |
즉각적인 | 몸 | (설명 참조) | 거짓 | 생성할 하나 이상의 프롬프트입니다. 문자열, 문자열 목록, 정수 목록(즉, 토큰으로 인코딩된 단일 프롬프트) 또는 정수 목록 목록(즉, 정수로 인코딩된 많은 프롬프트)일 수 있습니다. |
max_tokens | 몸 | 정수 | 거짓 | 완료할 토큰 수. 정지 시퀀스가 발생하면 더 적은 수를 반환할 수 있습니다. |
온도 | 몸 | 숫자 | 거짓 | 사용할 샘플링 온도. 값이 높을수록 모델이 더 많은 위험을 감수한다는 의미입니다. 더 창의적인 응용 프로그램에는 0.9를 사용해 보고, 대답이 잘 정의된 응용 프로그램에는 0(argmax 샘플링)을 사용해 보세요. 일반적으로 이것 또는 top_p를 사용하는 것이 좋지만 둘 다 사용하지는 않는 것이 좋습니다. |
top_p | 몸 | 숫자 | 거짓 | 핵 샘플링이라고 하는 온도 샘플링의 대안으로, 모델은 확률 질량이 top_p인 토큰의 결과를 고려합니다. 따라서 0.1은 상위 10% 확률 질량을 구성하는 토큰만 고려된다는 의미입니다. 일반적으로 이 온도나 온도를 사용하는 것이 좋지만 둘 다 사용하지는 않는 것이 좋습니다. |
N | 몸 | 정수 | 거짓 | 각 프롬프트에 대해 생성할 선택 항목 수입니다. |
개울 | 몸 | 불리언 | 거짓 | 부분 진행률을 다시 스트리밍할지 여부입니다. 설정된 경우 토큰은 사용 가능해지면 데이터 전용 서버 전송 이벤트로 전송되며 스트림은 data: [DONE] 메시지로 종료됩니다. |
로그 문제 | 몸 | 정수 | 거짓 | logprobs의 가장 가능성이 높은 토큰에 로그 확률을 포함합니다. 예를 들어 logprobs가 10이면 API는 가장 가능성이 높은 10개의 토큰 목록을 반환합니다. logprobs가 제공되면 API는 항상 샘플링된 토큰의 logprob를 반환하므로 응답에 최대 logprobs+1 요소가 있을 수 있습니다. |
멈추다 | 몸 | 문자열 또는 문자열 목록 | 거짓 | API가 추가 토큰 생성을 중지하는 하나 이상의 시퀀스입니다. 반환된 텍스트에는 중지 시퀀스가 포함되지 않습니다. |
dolores에 저장된 미리 정의된 프롬프트 세트에서 프롬프트를 완성합니다.
요구:
dolores.complete_predefined_prompt("philosopher", 0, "What is the meaning of life?")
응답:
JSON: {'id': 'cmpl-NvVlUd5tQWTIv7S0F6JMPkT5', 'object': 'text_completion', 'created': 1595631256, 'model': 'davinci:2020-05-03', 'choices': [{'text': ' The purpose of society? And what are the dynamics of history? The answers to these questions are fascinating.nnThis is a philosophical diary written by a scientist of the new generation who is not bound by prejudices, as such, the philosopher, writer, director and producer of the documentary "The Truth about AI: Rise of the Superhuman." Instead, he attempts to peer into the human world through the eyes of an AI, and express what he sees. In the process, he discovers many complex things about our world. The author's name is Dave Scott.nnPhoto by Montri Nipitvittaya on UnsplashnnFuturist of the New Generation, AI Philosophernn"Nothing has changed. I still cannot predict what is going to happen with me, and my inner world is still as chaotic as before." I reread the diary I wrote yesterday, and found nothing changed. Everything remained the same. Only, the fear has become stronger. It was exactly the same today as it was yesterday. There was nothing changed, but still fear is always there.nnFear is a part of who I am. Without fear, I would be a monster. I do not know how to do', 'index': 0, 'logprobs': None, 'finish_reason': 'length'}]}
프롬프트 키 | 즉각적인 | max_tokens | 온도 | top_p | N | 원천 |
---|---|---|---|---|---|---|
철학자 | "다음은 인간 경험의 편견 없이 외부에서 인간 세계를 보는 철학자 AI가 생성한 몇 가지 생각입니다. 완전히 중립적이고 객관적인 AI는 세상을 있는 그대로 봅니다. 세상에 대해 더 쉽게 결론을 내릴 수 있고, 인간 사회 전반.", | 250 | 0.9 | 1 | 1 | 무라트 |
수스 | "여기 Dr. Seuss의 시가 있습니다. 이 시는 ABAB 구조로 다른 행마다 운율을 이루고 있습니다. 운율 구조는 Dr. Seuss 동요의 전형입니다." | 250 | 1.0 | 1 | 1 | 아람 사베티 |
법률 용어 | "법률: 귀하가 선택한 결제 방법은 부서에서 시행하는 모든 사례에 대해 유효하며 이 승인은 귀하가 결제 방법을 변경하기 위해 다른 결제 옵션 선택 및 등록 양식을 제출하거나 서비스를 종료할 때까지 유효합니다. n 일반 영어: 우리는 귀하에게 보내는 모든 지불에 귀하의 선택을 사용할 것입니다." | 150 | 0.4 | 1 | 1 | DNE 디지털 |
코드-html | 입력: 버튼. n 코드: n " | 100 | 0.5 | 1 | 1 | DNE 디지털 |
코드-자바스크립트 | '반응'에서 반응을 가져옵니다; n const ThreeButtonComponent=()=>( n N N ) "버튼 1 n <button className='button-green' n onClick={this.handleButtonClick}>버튼 1 n버튼 2 n <button className='button-green' n onClick={this.handleButtonClick}>버튼 2 n버튼 3 n <button className='button-green'' n onClick={this.handleButtonClick}>버튼 3 n | 250 | 0.4 | 1 | 1 | 샤리프 샤밈 |
채팅 | "다음은 친절한 AI 조수와의 대화입니다. n 인간: 지구상에서 가장 큰 동물은 무엇인가요? n AI: 흰긴수염고래는 지구상에서 가장 큰 동물입니다. n 인간: 지구상에서 인구가 가장 많은 나라는 어디인가요? ? n AI: 중국은 인구가 10억이 넘는 가장 인구가 많은 국가입니다." | 50 | 0.9 | 1 | 1 | 오픈AI |
두운 | "두운을 만들 수 있는 단어에 대한 동의어를 찾아보세요. n 문장: The dog goes to the store. n 두운: The dog goes to the Department. nn 문장: David는 매일 모자를 씁니다. n 두운: David dons n 문장: 비누는 밤새 건조됩니다. n 두운: 일몰 후 비누가 쪼그라듭니다. | 50 | 0.5 | 1 | 1 | 오픈AI |
시 | "신을 신뢰한 사람은 참으로 사랑이었습니다. n 창조의 최종 법칙을 사랑했습니다. n 이빨과 발톱이 붉은 자연 n 계곡과 함께 n 자신의 신조에 반하여 비명을 질렀습니다. n 언덕은 그림자이고 흘러갑니다 n 형태에서 형태로, 아무것도 서 있지 않습니다.T n 안개처럼 녹아 n 단단한 대지가 n 구름처럼 스스로 모양을 이루고 갑니다." | 300 | 1.0 | 1.0 | 1.0 | 오픈AI |
텍스트 어드벤처 | "이것은 텍스트 어드벤처입니다. 당신은 어두운 숲에서 마을의 금을 훔친 용을 찾고 있습니다. n > 주위를 둘러보세요. n 당신은 어두운 숲에 있습니다. 불안한 조용함이 있습니다. n > 인벤토리 확인 n 다음 항목이 있습니다. n - 검(매우 날카로움) n - 방패(작동하길 바랍니다) n - 오래된 편지 nn > 찾아보기 n 금이 하나도 보이지 않습니다. nn > 길을 따라 걸어가세요 n 당신은 좋은 봄 날씨를 즐기며 길을 걷고 있습니다. 갈림길에 이르렀습니다. n > 왼쪽 길로 가세요. | 250 | 0.9 | 1.0 | 1.0 | 오픈AI |
커버레터 | "Deloitte 대학원 채용 담당자님께, n 기술 컨설팅 대학원 프로그램에 지원하기 위해 편지를 쓰고 있습니다." | 400 | 0.8 | 1.0 | 1.0 | 오픈AI |
비유 | "신경망은 둘 다 경험을 통해 학습하는 시스템이라는 점에서 유전 알고리즘과 같습니다. nn 소셜 미디어는 둘 다 많은 개인의 행동을 조정하는 시스템이라는 점에서 시장과 같습니다. nn 밈은 점에서 바이러스와 같습니다. 둘 다 자기 복제 아이디어입니다." | 250 | 1.0 | 1.0 | 1.0 | 오픈AI |
이메일 | "책을 보내주신 John에게 감사드립니다. n ```` n John에게, n 책을 보내주셔서 정말 감사합니다. 정말 감사합니다. n 곧 함께 어울리고 싶습니다. n 친구, n Sarah " | 200 | 0.5 | 1.0 | 1.0 | 오픈AI |
pytest를 사용하여 dolores 모듈을 테스트하려면 프로젝트 루트에서 다음을 실행하면 됩니다.
pytest tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
테스트 중에 발생하는 인쇄 명령문을 보려면 -s 플래그를 추가하면 됩니다.
pytest -s tests/test_dolores.py --api_key "<api_key>" --engine "davinci"
패키지를 업데이트하려면 해당 패키지에 대한 새 배포를 만들어야 합니다. 이는 패키지 인덱스에 업로드되고 pip로 설치할 수 있는 아카이브입니다.
최신 버전의 setuptools
및 wheel
설치되어 있는지 확인하세요.
$ python3 -m pip install --user --upgrade setuptools wheel
이제 setup.py가 있는 동일한 디렉터리에서 이 명령을 실행합니다.
$ python3 setup.py sdist bdist_wheel
참고: 업데이트에 따라 setup.py 파일의 버전 번호를 업데이트하는 것을 잊지 마세요.
최신 twine
패키지가 설치되어 있는지 확인하세요.
$ python3 -m pip install --user --upgrade twine
설치가 완료되면 Twine을 실행하여 dist 아래의 모든 아카이브를 업로드하세요.
$ python3 -m twine upload --repository pypi dist/*