CHAT GPT 1C. МИКРОСЕРВИС PYTHON FASTAPI
Привет программисты 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 просто придумала ответ. Вот такие случаи научимся отсекать в следующих уроках.