해결된 질문
작성
·
265
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
안녕하세요 정채진님,
이상하네요. 저는 코드가 아무 문제 없이 돌아가는데요? AgentFinish
의 인스턴스가 아닌 경우, 아래와 같이 output
을 확인했지만 tool
과 tool_input
모두 존재하고 있었습니다.
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