Модели 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?")
Доказательство работы: