인프런 커뮤니티 질문&답변

정채진님의 프로필 이미지

작성한 질문수

실리콘밸리 엔지니어와 함께하는 랭체인(LangChain)

Agents에 대해 알아보기

Custom Agent executor error

해결된 질문

24.03.02 01:30 작성

·

247

1

else:
  print("TOOL NAME : ", output.tool)
  print("TOOL INPUT : ", output.tool_input)

Traceback (most recent call last):
  File "/Users/chaejinjeong/Desktop/myGit/Study/langchain/inflearn/5.Agent/basic.py", line 75, in <module>
    print("TOOL NAME : ", output.tool)
output : [OpenAIToolAgentAction(tool='get_word_length', tool_input={'word': 'eudca'}, log="\nInvoking: `get_word_length` with `{'word': 'eudca'}`\n\n\n", message_log=[AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'call_DlTa5qRanu9HhiWGneMz2V3C', 'function': {'arguments': '{"word":"eudca"}', 'name': 'get_word_length'}, 'type': 'function'}]})], tool_call_id='call_DlTa5qRanu9HhiWGneMz2V3C')], <class 'list'>
  • output.tool 이라는 속성이 없어서 print 해보니 AgentAction List 형태로 출력이 되었습니다.

intermediate_steps = []
final_result = dict()
while True:
    query.update({"intermediate_steps": intermediate_steps})
    output: Union[AgentFinish, AgentAction] = agent.invoke(query)

    if isinstance(output, AgentFinish):
        final_result = output.return_values
        final_result = final_result.get("output")
        break
    else:
        if isinstance(output, list):
            output = output[0]
        print("TOOL NAME : ", output.tool)
        print("TOOL INPUT : ", output.tool_input)
        _tool = tools.get(output.tool)
        observation = _tool.run(output.tool_input)
        intermediate_steps.append((output, observation))


TOOL NAME :  get_word_length
TOOL INPUT :  {'word': 'eudca'}
  • 위처럼 인덱스 0으로 접근해서 처리해야할 것 같아 글 남깁니다.

답변 2

1

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

2024. 03. 02. 14:11

안녕하세요 정채진님,

이상하네요. 저는 코드가 아무 문제 없이 돌아가는데요? AgentFinish의 인스턴스가 아닌 경우, 아래와 같이 output을 확인했지만 tooltool_input 모두 존재하고 있었습니다.

image

tool='get_word_length' tool_input={'word': 'educa'} log="\nInvoking: `get_word_length` with `{'word': 'educa'}`\n\n\n" message_log=[AIMessage(content='', additional_kwargs={'function_call': {'arguments': '{"word":"educa"}', 'name': 'get_word_length'}})]

혹시 에러가 나시는 분들은 output을 확인하시고 정채진님처럼 하시는 것도 좋은 방법인 것 같습니다.

0

정채진님의 프로필 이미지
정채진
질문자

2024. 03. 03. 13:36

아하 저는 그냥 최신 버전으로 설치했는데 버저닝 문제였나보네요

감사합니다