CHAT GPT 1C. МИКРОСЕРВИС PYTHON FASTAPI
- Опубликовано Илья Низамов
- Разделы Blog
- Дата 17.09.2023
- Комментарии Нет комментариев
Привет программисты 1С! Скажу сразу, в этом уроке будет минимум 1С, но тот способ который я покажу является самым простым для получения доступа к chatgpt из 1С.
В этом уроке chat gpt 1c создадим микросервис на Python с помощью FastAPI, который отправляет запросы к chat gpt. Потом создадим отработку в 1С, которая будет отправлять запросы и получать ответы от chat gpt через наш микросервис.
Возможно в следующих уроках я буду усложнять пример, попробую адаптировать chatgpt для программистов 1С. В общем подписывайся на канал, жми лайк и колокольчик, а если решил заказать разработку по интеграции с chatgpt у меня звоните +79174490997
МИКРОСЕРВИС PYTHON FASTAPI С ОТПРАВКОЙ ЗАПРОСОВ К CHAT GPT
Обновляем PIP
python.exe -m pip install --upgrade pip
Создаем .env файл для хранения ключа
Прописываем токен который получили в консоли OpenAI
OPENAI_API_KEY=
Для работы с env установим библиотеку django-environ
pip install django-environ
Устанавливаем библиотеку для работы OpenAI
pip install openai
Для работы с HTTP запросами устанавливаем FastAPI
pip install fastapi
Устанавливаем uvicorn – асинхронный web сервер
pip install uvicorn
Создаем скрипт main.py
# Импортируем необходимые библиотеки
import environ
import openai
from fastapi import FastAPI
from pydantic import BaseModel
# Считываем ключи из env файла
env = environ.Env()
environ.Env.read_env()
# Создаем экземпляр класса FastAPI
app = FastAPI()
# Указываем API ключ для работы с OpenAI
openai.api_key = env('OPENAI_API_KEY')
# Создаем функцию выполняющую запрос к ChatGPT
def chat_with_gpt(system, question):
result = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": system},
{"role": "user", "content": question}
],
temperature=0.5
)
return result['choices'][0]['message']['content']
# Создаем класс для валидации данных
class ChatData(BaseModel):
system: str
question: str
# Создаем асинхронную функцию для обработки post запросов из 1С.
@app.post('/chatgpt', status_code=200)
async def process_data(payload: ChatData):
# Получаем данные и проводим их валидацию
data = payload.model_dump()
# Для отладки можем вывести в консоль то что получили из запроса
print(data)
# Выполняем запрос к ChatGPT
response = chat_with_gpt(data["system"], data["question"])
# Возвращаем обратно результат запроса от ChatGPT
return {'gpt_response': response}
Запускаем сервер и тестируем отправку запросов к chat gpt
uvicorn main:app --reload
Останавливаем сервер и создаем requirements.txt
pip freeze > requirements.txt
Установку всех пакетов из этого файла можно произвести командой
pip install -r requirements.txt
Обработка для запросов к chat gpt из 1c
Создаем форму с текстовыми реквизитами и размещаем их на форме.
Создаем команду для отправки запросов и размещаем ее в командной панели
Обработчик команды
&НаКлиенте Процедура Отправить(Команда) ОчиститьСообщения(); Результат = ""; // Проверяем заполнение полей Если Не ЗначениеЗаполнено(Роль) ИЛИ Не ЗначениеЗаполнено(Вопрос) Тогда Сообщить("Заполните обязательные поля ""Роль"" и ""Вопрос"""); Возврат; КонецЕсли; // Создаем данные для тела запроса ДанныеЗапроса = Новый Структура; ДанныеЗапроса.Вставить("system", Роль); ДанныеЗапроса.Вставить("question", Вопрос); // Преобразуем структуру в JSON ЗаписьJSON = Новый ЗаписьJSON; ЗаписьJSON.УстановитьСтроку(); ЗаписатьJSON(ЗаписьJSON, ДанныеЗапроса); ДанныеJSON = ЗаписьJSON.Закрыть(); // Отправляем запрос HTTPСоединение = Новый HTTPСоединение("localhost", 8000); HTTPЗапрос = Новый HTTPЗапрос("chatgpt"); HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json"); HTTPЗапрос.УстановитьТелоИзСтроки(ДанныеJSON, КодировкаТекста.UTF8, ИспользованиеByteOrderMark.НеИспользовать); РезультатЗапроса = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос); // Выводим ответ Результат = "Код ответа от сервера: " + РезультатЗапроса.КодСостояния + Символы.ПС + Символы.ВК + РезультатЗапроса.ПолучитьТелоКакСтроку(); КонецПроцедуры
Примеры результатов запросов к chat gpt 1c
Меняем роль, но вопрос оставляем тот же. Честно говоря я не спец в хоккее, но мне кажется что chat gpt просто придумала ответ. Вот такие случаи научимся отсекать в следующих уроках.