Как создать более детерминированные агенты LangChain ReAct?Python

Программы на Python
Anonymous
Как создать более детерминированные агенты LangChain ReAct?

Сообщение Anonymous »

Я пытаюсь создать агент LangChain ReAct, который управляет проблемами GitHub. Я создал такую ​​функцию:

Код: Выделить всё

    def create_issue(self, repo_name: str, title: str, body: str, assignee: str, label: str) -> List[Issue]:
repo = self.__get_repository(repo_name)
return repo.create_issue(title=title, body=body, assignee=assignee, labels=[label])
Использование библиотеки PyGithub. Затем я создал такой инструмент:

Код: Выделить всё

@tool
def create_github_issue(args: str) -> str:
"""
my description here
"""
argument validation code
call the above create_issue function
Тогда у меня в агенте появляется такое приглашение:

Код: Выделить всё

    PROMPT_TEMPLATE="""You are helpful, respectful ...
You have access to the following tools to achieve this goal:
{tools}

To answer the question you can use the following process:

Question: ...
Thought: ...
Action: ...
Action Input: ...
Observation: ...
... (the flow Thought/Action/Action Input/Observation could repeat max N time until you find the Final Answer)
Thought: ...
Final Answer: ...

Begin!

Question: {input}
Thought:{agent_scratchpad}"""
Проблема в том, что входной аргумент arg create_github_issue недетерминирован. Иногда я получаю:

Код: Выделить всё

repo name, title, body, assignee, label
Другие, которые я получаю:

Код: Выделить всё

repo name=xxxxxx, title=yyyyy, body=uuuuu, assignee=xxxxx, label=ttttt
И другие варианты. Трудно понять, как анализировать эти параметры.
Я прочитал все возможные статьи в Интернете, просмотрел множество видеороликов на YouTube и т. д. Единственное, что я обнаружил, имеет более детерминированные параметры, это действуйте по подсказке (относящейся к описанию инструмента и к агенту). Однако это не всегда работает так, как ожидалось.
Затем во всех своих бесконечных экспериментах я обнаружил, что иногда LLM (я использую LLama 3.1 с провайдером Ollama) делают очень плохие рассуждения или выполняют дополнительные действия. в этом нет необходимости.
Что касается проблемы управления параметрами, я также пробовал использовать Pydantic, но мне не ясны реальные преимущества его использования, я заметил, что иногда получал ошибки синтаксического анализа, потому что это получает странное форматирование. Более того, у меня мало контроля над исключениями, которые он вызывает.
В моем конкретном случае я хотел бы понять, какой подход лучше всего использовать, чтобы получить максимальную выгоду и детерминированный результат. от этой технологии в моем конкретном сценарии.

Подробнее здесь: https://stackoverflow.com/questions/790 ... act-agents

Вернуться в «Python»