Skip to content

Commit 4373d1e

Browse files
committed
add more comments
1 parent 3e75ab7 commit 4373d1e

File tree

2 files changed

+29
-5
lines changed

2 files changed

+29
-5
lines changed

src/api_handler/call_request.rs

+26-5
Original file line numberDiff line numberDiff line change
@@ -3,20 +3,34 @@ use crate::models::general::llm::{APIResponse, ChatCompletion, Message};
33
use dotenv::dotenv;
44
use reqwest::header::{HeaderMap, HeaderValue};
55
use std::env;
6-
// backend_hive
76

8-
// Call LLM GPT
7+
/*
8+
Этот код отвечает за взаимодействие с API OpenAI для вызова функции "Chat Completions",
9+
которая используется для отправки сообщений и получения ответов от модели GPT
10+
*/
11+
12+
/*
13+
Функция call_gpt выполняет следующие задачи:
14+
Загружает API-ключи и другие параметры из окружения.
15+
Создаёт HTTP-запрос для вызова API OpenAI.
16+
Отправляет сообщения модели GPT и получает ответ.
17+
Обрабатывает ошибки на каждом этапе.
18+
Возвращает текст ответа от модели.
19+
*/
20+
21+
// message: Vec<Message>: Вектор сообщений (Message), которые отправляются в модель GPT. Это, например, история чата или конкретные запросы.
922
pub async fn call_gpt(message: Vec<Message>) -> Result<String, Box<dyn std::error::Error + Send>> {
23+
// Загружает переменные окружения из файла .env в текущую среду.
1024
dotenv().ok();
1125

1226
// Extract api keys from .env
1327
let api_key: String = env::var("OPEN_AI_KEY").expect("OPEN_AI_KEY not found");
1428
let api_org: String = env::var("OPEN_AI_ORG").expect("OPEN_AI_ORG not found");
1529

16-
// Confirm base url endpoint
30+
// Это конечная точка OpenAI для вызова функции "Chat Completions"
1731
let url: &str = "https://api.openai.com/v1/chat/completions";
1832

19-
// Create client headers
33+
// Создаётся объект HeaderMap, который хранит HTTP-заголовки.
2034
let mut headers = HeaderMap::new();
2135
headers.insert(
2236
"authorization",
@@ -27,13 +41,18 @@ pub async fn call_gpt(message: Vec<Message>) -> Result<String, Box<dyn std::erro
2741
HeaderValue::from_str(&api_org.as_str())
2842
.map_err(|e| -> Box<dyn std::error::Error + Send>{ Box::new(e) })?);
2943

30-
// create reqwest client
44+
// Создаётся клиент с предварительно заданными заголовками (default_headers).
3145
let client = reqwest::Client::builder()
3246
.default_headers(headers)
3347
.build()
3448
.map_err(|e| -> Box<dyn std::error::Error + Send>{ Box::new(e) })?;
3549

3650
// create chat completion
51+
/*
52+
model: Указание используемой модели (gpt-3.5-turbo).
53+
messages: Сообщения, которые будут отправлены модели.
54+
temperature: Параметр, определяющий степень случайности в ответах. Значение 0.1 указывает на минимальную случайность (ответы будут более детерминированными).
55+
*/
3756
let chat_completion: ChatCompletion = ChatCompletion {
3857
model: "gpt-3.5-turbo".to_string(),
3958
messages: message,
@@ -61,6 +80,8 @@ pub async fn call_gpt(message: Vec<Message>) -> Result<String, Box<dyn std::erro
6180
.map_err(|e| -> Box<dyn std::error::Error + Send>{ Box::new(e) })?;
6281

6382
//parse 'content' from massage from choice from api call response
83+
// Первый элемент из массива choices (модель может вернуть несколько вариантов ответа).
84+
// Поле message.content, которое содержит текст ответа.
6485
Ok(res.choices[0].message.content.clone())
6586
}
6687

src/lib.rs

+3
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@ use proc_macro::TokenStream;
44
use quote::{quote, ToTokens};
55
use syn::{parse_macro_input, ItemFn};
66

7+
8+
// Его задача — взять функцию, помеченную атрибутом #[function_to_string],
9+
// и сгенерировать новую функцию, которая возвращает текстовое представление исходной функции.
710
#[proc_macro_attribute]
811
pub fn function_to_string(_attr: TokenStream, item: TokenStream) -> TokenStream {
912
let input_fn: ItemFn = parse_macro_input!(item as ItemFn);

0 commit comments

Comments
 (0)