LangChain decorators는 LangChain 위에 구축된 레이어로, 커스텀 langchain prompt와 chain을 작성하기 위한 syntactic sugar 🍭를 제공합니다
피드백, 이슈, 기여에 대해서는 여기에 이슈를 등록해주세요:
ju-bezdek/langchain-decorators
주요 원칙과 이점:
- 더
pythonic한 코드 작성 방식 - 들여쓰기로 인해 코드 흐름이 깨지지 않는 여러 줄 prompt 작성
- 힌팅, 타입 체킹, 문서 팝업과 같은 IDE 내장 지원을 활용하여 함수를 빠르게 확인하고 prompt, 소비하는 parameter 등을 확인
- 🦜🔗 LangChain 생태계의 모든 기능 활용
- optional parameter 지원 추가
- parameter를 하나의 class에 바인딩하여 prompt 간에 쉽게 공유
빠른 시작
설치
예제
시작하는 좋은 방법은 여기 있는 예제를 검토하는 것입니다:다른 parameter 정의하기
여기서는llm_prompt decorator로 함수를 prompt로 표시하여 효과적으로 LLMChain으로 변환합니다. 실행하는 대신
표준 LLMchain은 inputs_variables와 prompt보다 훨씬 많은 init parameter를 받습니다… 여기서는 이 구현 세부사항이 decorator에 숨겨져 있습니다.
작동 방식은 다음과 같습니다:
- Global settings 사용:
- 미리 정의된 prompt types 사용
- decorator에서 직접 settings 정의
memory 및/또는 callbacks 전달:
이들 중 하나를 전달하려면 함수에서 선언하기만 하면 됩니다 (또는 kwargs를 사용하여 무엇이든 전달)간소화된 streaming
streaming을 활용하려면:- prompt를 async function으로 정의해야 합니다
- decorator에서 streaming을 켜거나 streaming이 켜진 PromptType을 정의할 수 있습니다
- StreamingContext를 사용하여 stream을 캡처합니다
Prompt 선언
기본적으로 prompt는 전체 함수 docs이며, prompt를 표시하지 않는 한prompt 문서화
<prompt> 언어 태그가 있는 코드 블록을 지정하여 docs의 어느 부분이 prompt 정의인지 지정할 수 있습니다
human message
(we are using the real role that are enforced by the LLM - GPT supports system, assistant, user)Output parsers
- llm_prompt decorator는 기본적으로 output type을 기반으로 최적의 output parser를 자동으로 감지하려고 시도합니다. (설정되지 않은 경우 raw string을 반환)
- list, dict 및 pydantic output도 기본적으로 지원됩니다 (자동으로)