반응형
Notice
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 파이썬
- 컴퓨터비전
- 딥러닝
- 네트워크보안
- 소프트웨어공학
- 소프트웨어
- 빅데이터
- 2
- 컴퓨터과학
- 자료구조
- 머신러닝
- 인공지능
- 클라우드컴퓨팅
- 코딩
- 웹개발
- 컴퓨터공학
- 자바스크립트
- Yes
- 프로그래밍언어
- 데이터분석
- 보안
- 프로그래밍
- I'm Sorry
- 버전관리
- 데이터과학
- 알고리즘
- 네트워크
- 데이터베이스
- 데이터구조
- 사이버보안
Archives
- Today
- Total
스택큐힙리스트
어떻게 LangChain 콜백을 사용하여 모델 호출 및 답변을 변수에 기록할 수 있을까요? 본문
반응형
class MyCustomHandler(BaseCallbackHandler):
def on_text(self, text: str, **kwargs: Any) -> Any:
print(f텍스트: {text})
self.log = text
def on_chain_start(
self, serialized: Dict[str, Any], inputs: Dict[str, Any], **kwargs: Any
) -> Any:
체인이 실행되기 시작할 때 실행됩니다.
print(체인이 시작되었습니다.)
이것은 대체로 예상대로 작동하지만, 알 수 없는 부작용이 있어 어디에서 발생하는지 찾을 수 없습니다. 출력 결과는 다음과 같습니다:
handler.log
변수에는 다음이 포함되어 있습니다:
'포맷팅 후 프롬프트:\n\x1b[32;1m\x1b[1;3m1 + 2 = \x1b[0m'
Prompt after formatting와 텍스트를 녹색으로 설정하는 ANSI 코드는 어디에서 오는 건가요? 이것들을 제거할 수 있을까요?
전체적으로, 콜백 시스템을 사용하여 응용 프로그램을 로그하는 더 좋은 방법이 있는 것 같은데 놓친 것이 있을까요? 이 부분은 문서화가 잘 되어 있지 않은 것 같습니다.
답변 1
저는 그들을 없앨 수 있는지는 모르겠지만, 오늘 스스로 만난 경험을 토대로 그들이 어디서 온 것인지 알려드릴 수 있습니다. 다음과 같은 블록은 LangChain의 llm.py
클래스에서 여러 번 발생합니다:
prompt = self.prompt.format_prompt(**selected_inputs)
_colored_text = get_colored_text(prompt.to_string(), green)
_text = Formatting 후의 프롬프트:\n + _colored_text
if run_manager:
run_manager.on_text(_text, end=\n, verbose=self.verbose)
if stop in inputs and inputs[stop] != stop:
raise ValueError(
`stop`이 입력 중 어느 곳에 있으면 모든 곳에 있어야 합니다.
)
prompts.append(prompt)
그것은 매우 선택된 스니펫입니다, 그러나 colored_text가 콜백에만 전송된다는 것을 보여줍니다. 따라서 핸들러는 이를 볼 수 있지만 실제 LLM은 prompts
목록을 받는 것은 아닙니다.
또한 비활성화하는 방법도 없다고 생각합니다 - get_colored_text()
는 항상 추가 ANSI 코드를 반환합니다:
def get_colored_text(text: str, color: str) -> str:
색상이 지정된 텍스트 가져오기.
color_str = _TEXT_COLOR_MAPPING[color]
return f\u001b[{color_str}m\033[1;3m{text}\u001b[0m
내 생각에는 콜백이 원시 값으로 호출될 수 있다는 것은 합리적이므로 문제를 기록하겠습니다.
답변 2
LangChain Callbacks를 사용하여 모델의 호출과 응답을 변수에 기록하는 방법에 대해 알아보겠습니다. 이를위한 SEO 친화적인 한국어 에세이입니다.LangChain 콜백은 OpenAI의 GPT-3 모델과 상호 작용할 수 있는 기능을 제공합니다. 이 기능을 사용하면 모델의 호출과 해당 호출에 대한 응답을 콜백 함수를 통해 로깅(log)할 수 있습니다. 이를 통해 호출된 데이터 및 모델의 응답을 추적하고 기록할 수 있습니다.
먼저, LangChain Callbacks를 사용하려면 OpenAI Python 라이브러리를 설치해야합니다. 이 라이브러리는 OpenAI GPT-3 모델과의 인터페이스를 제공하여 모델과의 상호 작용을 가능하게 해줍니다.
콜백 함수를 작성할 때, 이 함수는 콜백이 호출될 때마다 실행되는 로직을 포함해야합니다. 여기에는 모델 호출 및 응답을 기록하는 로직이 포함됩니다. 이 예시에서는 파이썬의 리스트(list)를 사용하여 호출된 데이터 및 응답을 저장하는 것을 보여줄 것입니다.
```python
# LangChain Callbacks 예시
log = [] # 호출 및 응답을 저장할 리스트
def callback(results, error):
if error is not None:
# 오류가 발생한 경우 오류 메시지 기록
log.append(f오류 발생: {error})
else:
# 모델의 호출 및 응답을 기록
prompt = results[input][text]
completion = results[output][text]
log.append(f모델 호출: {prompt})
log.append(f모델 응답: {completion})
# 호출을 위한 API 요청 예시
openai.Completion.create(
engine=text-davinci-003,
prompt=안녕하세요.,
max_tokens=10,
n=1,
logprobs=0,
callback=callback # 위의 콜백 함수 사용
)
```
위 코드에서는 log라는 빈 리스트를 정의한 후, 콜백 함수를 작성합니다. 콜백 함수에서는 오류 여부를 확인하고, 오류가 없는 경우 모델의 호출과 응답을 log 리스트에 추가합니다. 이 예시에서는 prompt와 completion이라는 변수를 사용하여 모델에서 생성 된 호출 및 응답을 저장합니다. 예외 처리를 통해 오류가 발생한 경우에도 적절한 오류 메시지가 log 리스트에 기록됩니다.
하지만 중요한 것은 콜백 함수만 사용한다고 해서 log 리스트가 메모리를 무한정으로 소비하지 않는다는 것입니다. 여러 호출 및 응답 앞에 log.clear()와 같은 코드를 삽입하여 리스트를 시작할 때마다 비워야합니다. 이렇게하면 이전 호출의 데이터가 새로운 호출과 혼동되지 않습니다.
이것은 LangChain Callbacks를 사용하여 모델 호출과 응답을 변수에 기록하는 한 가지 방법입니다. 이를 통해 호출된 데이터 및 모델의 응답을 추적하고 필요한 경우 기록할 수 있습니다. 이런 기록은 모델의 동작을 이해하고, 오류를 디버깅하고, 미래의 개발 작업에 유용할 수 있습니다.
반응형
Comments