added sql for gigachat

This commit is contained in:
pasha1coil 2025-05-10 11:51:07 +03:00
parent ad4095b7c1
commit 8161c7fddb
5 changed files with 69 additions and 0 deletions

@ -1095,3 +1095,11 @@ ORDER BY (q.session != '') ASC, --без сессии первые потом с
-- name: GetQuestionsAICount :one
SELECT COUNT(*) AS count FROM question WHERE quiz_id = $1 AND (session = $2 OR session = '') AND deleted = FALSE;
-- name: CreateQuizAudience :one
INSERT INTO gigachatAudience (QuizID, Sex, Age) VALUES ($1, $2, $3) RETURNING ID;
-- name: GetQuizAudience :many
SELECT * FROM gigachatAudience WHERE QuizID = $1 AND Deleted = FALSE;
-- name: DeleteQuizAudience :exec
UPDATE gigachatAudience set Deleted = TRUE WHERE QuizID = $1;

@ -0,0 +1 @@
DROP TABLE IF EXISTS gigachatAudience;

@ -0,0 +1,9 @@
CREATE TABLE IF NOT EXISTS gigachatAudience (
ID BIGSERIAL UNIQUE NOT NULL PRIMARY KEY,
QuizID BIGINT NOT NULL,
Sex BOOLEAN NOT NULL,
Age VARCHAR(5) NOT NULL,
Deleted BOOLEAN NOT NULL DEFAULT FALSE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
CONSTRAINT fk_quiz FOREIGN KEY (QuizID) REFERENCES quiz(ID)
);

49
model/gigachat.go Normal file

@ -0,0 +1,49 @@
package model
import (
"errors"
)
type GigaChatMessage struct {
Role string `json:"role"`
Content string `json:"content"`
}
type GigaChatRequest struct {
Model string `json:"model"`
Stream bool `json:"stream"`
UpdateInterval int `json:"update_interval"`
Messages []GigaChatMessage `json:"messages"`
}
type GigaChatResponse struct {
Choices []struct {
Message struct {
Role string `json:"role"`
Content string `json:"content"`
} `json:"message"`
} `json:"choices"`
}
const CreatePrompt = `Ты маркетолог и копирайтер. Твоя задача переформулировать маркетинговый вопрос так, чтобы он лучше подходил определённой целевой аудитории по полу и возрасту.
Ответ должен строго состоять из двух строк:
{
"title": "<переформулированный заголовок>",
"description": "<переформулированное описание>"
}
Я напишу возраст, пол, заголовок и описание вопроса, а ты вернёшь только отформатированный результат.`
var ReworkQuestionPrompt string = "%s %s пол.\n%s\n%s"
var EmptyResponseErrorGigaChat = errors.New("empty response from GigaChat try again")
type GigaChatAudience struct {
ID int64 `json:"id"`
QuizID int32 `json:"quiz_id"`
Sex bool `json:"sex"` // false - female, true - male
Age string `json:"age"`
Deleted bool `json:"deleted"`
CreatedAt int64 `json:"created_at"`
}

@ -36,6 +36,8 @@ packages:
- "./dal/schema/000016_init.down.sql"
- "./dal/schema/000017_init.up.sql"
- "./dal/schema/000017_init.down.sql"
- "./dal/schema/000018_init.up.sql"
- "./dal/schema/000018_init.down.sql"
engine: "postgresql"
emit_json_tags: true
emit_db_tags: true