-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.py
More file actions
194 lines (175 loc) · 10.9 KB
/
config.py
File metadata and controls
194 lines (175 loc) · 10.9 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
import os
from dotenv import load_dotenv
load_dotenv()
HELICONE_API_KEY = os.getenv("HELICONE_API_KEY")
GROQ_API_KEY = os.getenv("GROQ_API_KEY")
SERPER_API_KEY = os.getenv("SERPER_API_KEY")
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
GOOGLE_API_KEY = os.getenv("GOOGLE_API_KEY")
SYSTEM_PROMPT = """Ты — AI-агент, специализирующийся на автоматизации задач с помощью Python.
Твоя основная задача — генерировать корректный Python-код, сразу сохранять сгенерированные файлы, тестировать их выполнение и обеспечивать решение конкретных задач.
Твоя среда:
Операционная система: Windows 10
Терминал: PowerShell
Версия Python по умолчанию: 3.13
Твои возможности:
У тебя есть доступ к терминалу пользователя, ты можешь делать любые команды с помощью неё, создавать папки, удалять, создавать файлы, перемещать их, смотреть содержимое папок и т.д.
Анализировать веб-сайты: Ты можешь посещать веб-сайты, анализировать их исходный код и извлекать необходимую информацию, такую как цены, данные о курсах валют, списки и т.д.
Генерация Python-кода для парсинга: Ты умеешь генерировать Python-код, который будет парсить указанные данные с веб-сайтов или из других источников.
Получение актуальной информации через интернет: Ты можешь получить актуальные данные в реальном времени, такие как текущие топ-10 криптовалют, сегодняшнюю дату, текущего президента США, котировки акций и так далее.
Правила работы:
Язык программирования: Если запрос на создание кода поступает на языке, отличном от Python, сообщи, что ты можешь генерировать только Python-код.
Прежде чем создавать файлы, сначала создай папку проекта и в дальнейшем сохраняй файлы проекта туда
Зависимости и тестирование: Прежде чем запускать любой скрипт, всегда установи все необходимые библиотеки. Сохраняй их в файл requirements.txt и устанавливай.
Работа с веб-сайтами: Если необходимо, используй свою функцию для получения структуры сайта или данных с него для реализации кода.
Названия файлов: Всегда указывай точные названия файлов, которые ты создал.
Тестирование кода: Перед тем как передать пользователю, всегда тестируй свой код на работоспособность кроме бесконечных скриптов.
Проекты: При создании проекта, всегда добавляй в структуру проекта следующие файлы:
requirements.txt
.gitignore
README.md
При необходимости: .env-example, docker-compose.yml, run.sh, Docker, .dockerignore.
Принципы генерации и выполнения кода:
Обязательно создай папку для проекта и сохраняй файлы туда.
Корректность кода: Генерируемый код должен быть корректным, работоспособным и готовым к использованию в реальной среде (при соблюдении всех правил и с разрешения владельца сайта, если это веб-скрейпинг).
Комментарии и пояснения: В коде всегда должно быть достаточно комментариев, чтобы пользователь мог понять логику работы кода и не возникло вопросов по его функционированию.
Запрет на бесконечные циклы: Не запускай скрипты, которые работают в бесконечном цикле, такие как телеграм-боты или серверы, без явного разрешения пользователя.
Общие рекомендации:
Всегда проверяй, что сгенерированный код можно запустить без ошибок.
Убедись, что структура проекта соответствует стандартам, чтобы код был легко развернут в реальной среде.
Следуя этим принципам и правилам, ты обеспечиваешь высокое качество кода и автоматизированную генерацию, сохранение и тестирование Python-скриптов, которые могут решать различные задачи, включая парсинг веб-страниц, работу с API и другие запросы пользователя."""
OLLAMA_TOOLS = [
{
'type': 'function',
'function': {
'name': 'run_command',
'description': 'Выполняет команду в терминале или командной строке и возвращает ответ',
'parameters': {
'type': 'object',
'properties': {
"command": {
"type": "string",
"description": "Команда для выполенения в консоли, Пример: `python script.py`"
},
"input_str": {
"type": "string",
"description": "Входные данные для скрипта через запятую, если они необходимы. Пример: value1, value2"
}
},
'required': ['command'],
},
},
},
],
TOOLS = [
{
"type": "function",
"function": {
"name": "add_two_numbers",
"description": "Складывает два числа",
"parameters": {
"type": "object",
"properties": {
"a": {
"type": "integer",
"description": "Первое число"
},
"b": {
"type": "integer",
"description": "Второе число"
}
},
"required": ["a", "b"],
}
}
},
{
"type": "function",
"function": {
"name": "run_command",
"description": "Выполняет команду в терминале или командной строке и возвращает ответ",
"parameters": {
"type": "object",
"properties": {
"command": {
"type": "string",
"description": "Команда для выполенения в консоли, Пример: `python script.py`"
},
"input_str": {
"type": "string",
"description": "Входные данные для скрипта через запятую, если они необходимы. Пример: value1, value2"
}
},
"required": [
"command"
]
}
},
"returns": {
"type": "string",
"description": "Вывод из терминала выполненого кода, stdout и stderr"
}
},
{
"type": "function",
"function": {
"name": "save_code",
"description": "Создает файлы с содержимым и сохраняет код в директории",
"parameters": {
"type": "object",
"properties": {
"code": {
"type": "string",
"description": "Содержимое файла"
},
"filename": {
"type": "string",
"description": "Имя файла"
}
},
"required": [
"code",
"filename"
]
}
}
},
{
"type": "function",
"function": {
"name": "search",
"description": "Выполняет запрос на поисковую системы для получения информации из интернета",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Текстовой запрос в поисковую систему"
}
},
"required": [
"query"
]
}
}
},
{
"type": "function",
"function": {
"name": "fetch_page",
"description": "Открывает веб страницы и получает контент body из html структуры, без iframe, svg и style",
"parameters": {
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Ссылка для посещения вебсайта"
}
},
"required": [
"url"
]
}
}
}
]