Вопрос или проблема
У меня уже какое-то время возникают проблемы с фреймворком Autogen. ЯFollowed руководства на YouTube, документацию Autogen, выполнил необходимые установки и все равно получаю одну и ту же ошибку TypeError: ‘NoneType’ object is not iterable. Вот мой код, который я использовал, приложение создает папку с именем “coding”, после чего приложение разбивается и появляется эта ошибка.
import os
import autogen
from autogen import AssistantAgent, UserProxyAgent
os.environ["OPENAI_API_KEY"] = "dummy_key"
llm_config_local = {"config_list" : [{
"model": "gemma-2-2b-it-GGUF/gemma-2-2b-it-Q4_K_M.gguf",
"base_url": "http://localhost:1234/v1/completions",
"api_key": None,
"price": [0, 0]
}]}
assistant = AssistantAgent("assistant", llm_config=llm_config_local)
user_proxy = UserProxyAgent(
"user_proxy", code_execution_config={"executor":
autogen.coding.LocalCommandLineCodeExecutor(work_dir="coding")}
)
# Начать чат
user_proxy.initiate_chat(
assistant,
message="Постройте график изменения цен акций NVDA и TESLA с начала года.",
)
Я действительно думаю, что это ошибка в Autogen, потому что я по-прежнему получаю ту же ошибку, несмотря на реализацию разных кодовых баз.
Ответ или решение
Проблема, с которой вы столкнулись — ошибка TypeError: 'NoneType' object is not iterable
, возможно, связана с тем, что ваша конфигурация или возврат данных из функции не соответствует ожидаемому формату.
Вот несколько шагов, которые могут помочь диагностировать и устранить эту ошибку:
-
Проверьте конфигурацию: Убедитесь, что в вашем
llm_config_local
все параметры правильно определены. Например, значениеapi_key
у вас установлено вNone
. Это может вызвать проблемы, если где-то в коде ожидалось, что этот ключ будет валидным (хотя иногда это может быть допустимо, если ваша локальная реализация не требует ключа). -
Проверьте метод инициирования чата: Ваша функция
initiate_chat
ожидает, что будет возвращен результат, который можно будет итерировать. Если, например, вы не получаете ответа от модели или ответ некорректный, это может привести к данной ошибке. Проверьте логи выполнения, чтобы удостовериться, чтоmessage
корректно обрабатывается. -
Отладка: Попробуйте добавить отладочные сообщения перед вызовом
initiate_chat
и после него, чтобы проверить возвращаемые результаты. Например, вы можете сделать следующее:response = user_proxy.initiate_chat( assistant, message="Plot a chart of NVDA and TESLA stock price change YTD.", ) print("Response received:", response)
Если
response
будет иметь значениеNone
, это и будет источником проблемы. -
Проверка рабочей директории: Убедитесь, что путь к рабочей директории
coding
не вызывает конфликтов и доступен для записи. Проблемы с доступом к файловой системе могут также привести к ошибкам в исполнении кода. -
Обновление библиотек: Убедитесь, что все пакеты, включая
autogen
, обновлены до последней версии. Иногда ошибки могут быть уже исправлены в новых релизах. -
Эксперимент с минимальным примером: Постарайтесь минимизировать ваш код до самого необходимого, чтобы изолировать проблему. Например, попробуйте просто выполнить запрос к модели без использования
UserProxyAgent
и проверить, получаете ли вы ответ:# Пример запроса, чтобы проверить, что модель работает независимо response = assistant.generate("Простой тестовый запрос") print(response)
Если вышеизложенные шаги не помогут, вам стоит обратиться к сообществу разработчиков autogen
через GitHub или другие каналы поддержки, предоставив им минимальный пример кода, который воспроизводит вашу проблему. Это поможет выявить, является ли это известной проблемой или багом, требующим исправления.