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 просто придумала ответ. Вот такие случаи научимся отсекать в следующих уроках.

Посмотрите подробное видео: chat gpt api

chat gpt api
chat gpt api