Модели GGML (llama cpp) становятся тупыми при использовании в Python

Я борюсь с проблемой моделей, которые вообще не следуют инструкциям, когда они используются в Python, однако они работают намного лучше, когда используются в оболочке (например, cmd или powershell).

примеры Python:

Вопрос: llm("Можете ли вы решить математические вопросы?") Ответ: \nМожете ли вы решить эти математические вопросы?

Вопрос: llm("что такое (4,5*2,1)^2,2?") Ответ: Вывод длинного текста опущен. Это просто не имело отношения к вопросу. Он просто задавал больше вопросов вместо того, чтобы отвечать на вопрос.

Я пытаюсь использовать его с langchain в качестве lm для агента, однако модели ведут себя слишком глупо. Я должен быть в состоянии получить правильный ответ на следующее:

      from langchain.agents import load_tools

tools = load_tools(
    ['llm-math'],
    llm=llm
)

from langchain.agents import initialize_agent

zero_shot_agent = initialize_agent(
    agent="zero-shot-react-description",
    tools=tools,
    llm=llm,
    verbose=True,
    max_iterations=3
)
zero_shot_agent("what is (4.5*2.1)^2.2?")

Ответ, который я получаю:

      Entering new AgentExecutor chain...
Llama.generate: prefix-match hit
 let's get the calculator out!
Action: [Calculator]
Action Input: 4.5 and 2.1 as a ratio
Observation: [Calculator] is not a valid tool, try another one.
Thought:Llama.generate: prefix-match hit

опуская большой выход

      OutputParserException: Could not parse LLM output: ` I will use the power rule for exponents to do this by hand.
Action: (4.5*2.1)^2.2 = 4.5*2.1^2.2`

Есть ли способ решить эту проблему, но я хочу использовать модель GGML (или любую модель, которую можно запускать на процессоре локально). Модель, которую я получил, как указано выше, — это manticore 13b q4_0. (хотя я уверен, что более крупные модели, т.е. больше бит, например 5 или 8, не будут лучше). Кроме того, такого рода ошибка (OutputParserException возникает только тогда, когда я использую блокнот (ipynb или Google Colab). Обычно я сталкиваюсь с другой проблемой, когда код запускается в Python REPL (через cmd или powershell). Проблема, с которой я сталкиваюсь при запуске кода в REPL заключается в том, что langchain просто не может использовать мои инструменты. Например, для моего вопросаЯ получаю такие результаты, как

       I should use the calculator for this math problem.
Action: [Calculator]
Action Input: press the equals button and type in 4.5 and 2.1, then press the square root button twice
Observation: [Calculator] is not a valid tool, try another one.

 I will use a regular calculator.
Action: [Regular Calculator]
Action Input: turn on the calculator and input the problem: (4.5*2.1)^2.2
Observation: [Regular Calculator] is not a valid tool, try another one.

 I will use my phone's calculator app.
Action: [Phone Calculator]
Action Input: open the app and input the problem: (4.5*2.1)^2.2
Observation: [Phone Calculator] is not a valid tool, try another one.
Thought:

> Finished chain.
{'input': 'what is (4.5*2.1)^2.2?', 'output': 'Agent stopped due to iteration limit or time limit.'}

Хотя решение проблемы остановилось на третьей итерации (попытка), я не вижу смысла позволять ей работать дольше.

1 ответ

LLMS борется с логикой и расчетом. даже gpt4 не может вычислить возведение в степень десятичных чисел. если ты это посчитаешь

       what is (4.5*2.1)^2.2?")

в интерпретаторе Python он дает точный ответ. Когда мы взаимодействуем с фильмами, мы должны использовать правильные агенты.

      from langchain.agents.agent_toolkits import create_python_agent
from langchain.tools.python.tool import PythonREPLTool
from langchain.llms import OpenAI
# OpenAI uses text-davinci-003 by default
llm=OpenAI(temperature=0)
# this will allow llm execute python code
agent_executer=create_python_agent(llm=llm,tool=PythonREPLTool(),verbose=True)

agent_executer.run("what is (4.5*2.1)^2.2?")

Доказательство работы:

Другие вопросы по тегам