рдореБрдЦреНрдп рд╕рд╛рдордЧреНрд░реА рдкрд░ рдЬрд╛рдПрдБ

O4-Mini API: рдбреЗрдореЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдЪрд░рдг-рджрд░-рдЪрд░рдг рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓

рдЬрд╛рдиреЗрдВ рдХрд┐ OpenAI рдХреЗ o4-mini API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╣реЗрддреБ рдПрдХ рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ рдХреИрд╕реЗ рдмрдирд╛рдПрдВред
┬╖ 12 рдорд┐ре░ рдкрдврд╝реЗрдВ

AI рдХреЗ рд╕рд╛рде рдЦреЛрдЬреЗрдВ

OpenAI рдХрд╛ o4-mini рддрд░реНрдХ-рдХреНрд╖рдорддрд╛ рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд o-рд╕реАрд░реАрдЬрд╝ рдХреЗ AI рдореЙрдбрд▓реЛрдВ рдореЗрдВ рдирд╡реАрдирддрдо рдЬреЛрдбрд╝ рд╣реИред рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ OpenAI рдХреЗ o4-mini API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ рдмрдирд╛рдирд╛ рд╕рд┐рдЦрд╛рдКрдВрдЧрд╛ред рдпрд╣ рдЯреВрд▓:

  • рд╢реЛрдз-рдкрддреНрд░реЛрдВ (PDF) рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдирд┐рдХрд╛рд▓реЗрдЧрд╛ред
  • рдХрдордЬрд╝реЛрд░ рддрд░реНрдХ, рдЕрд╕рдорд░реНрдерд┐рдд рджрд╛рд╡реЗ, рдпрд╛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ред
  • рд╕реБрдзрд╛рд░ рд╕реБрдЭрд╛рдПрдЧрд╛ рдФрд░ рдирд┐рд╖реНрдХрд░реНрд╖ рджреЗрдЧрд╛ред

рд╣рдо рдЕрдкрдиреЗ рд░рд┐рд╡реНрдпреВ рд╕рд╣рд╛рдпрдХ рдХреЛ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЯреВрд▓ рд╕рдкреЛрд░реНрдЯ рд╕реЗ рднреА рдЙрдиреНрдирдд рдХрд░реЗрдВрдЧреЗ, рддрд╛рдХрд┐ рдореЙрдбрд▓ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдкрдбрд╝рдиреЗ рдкрд░ p-value, effect size рдФрд░ confidence interval рдХреА рдЧрдгрдирд╛ рдХрд░ рд╕рдХреЗред

рд╣рдо рдЕрдкрдиреЗ рдкрд╛рдардХреЛрдВ рдХреЛ AI рдХреА рддрд╛рдЬрд╝рд╛ рдЦрдмрд░реЛрдВ рд╕реЗ рдЕрдкрдбреЗрдЯ рд░рдЦрддреЗ рд╣реИрдВ The Median рдХреЗ рдЬрд╝рд░рд┐рдПтАФрдпрд╣ рд╣рдорд╛рд░рд╛ рдирд┐рдГрд╢реБрд▓реНрдХ рд╢реБрдХреНрд░рд╡рд╛рд░ рдиреНрдпреВрдЬрд╝рд▓реЗрдЯрд░ рд╣реИ рдЬреЛ рд╣рдлреНрддреЗ рдХреА рдЕрд╣рдо рдЦрдмрд░реЛрдВ рдХреЛ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рд╕рдордЭрд╛рддрд╛ рд╣реИред рд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдм рдХрд░реЗрдВ рдФрд░ рд╣рд░ рд╣рдлреНрддреЗ рдХреБрдЫ рд╣реА рдорд┐рдирдЯреЛрдВ рдореЗрдВ рдЕрдкрдбреЗрдЯ рд░рд╣реЗрдВ:

O4-Mini рдХреНрдпреЛрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ?

OpenAI рдХрд╛ o4-mini рдПрдХ рдХрд┐рдлрд╛рдпрддреА, рдЙрдЪреНрдЪ-рдкреНрд░рджрд░реНрд╢рди рддрд░реНрдХ рдореЙрдбрд▓ рд╣реИ рдЬреЛ рдХреЛрдбрд┐рдВрдЧ, рдЧрдгрд┐рдд рдФрд░ рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рддрд░реНрдХ рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдореЗрдВ рдЧрд╣рди рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИред o3 рдореЙрдбрд▓ рд╕реЗ рдЫреЛрдЯрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдпрд╣ AIME 2024/2025 рдФрд░ GPQA рдЬреИрд╕реЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХреНрд╕ рдкрд░ рд▓рдЧрд╛рддрд╛рд░ рдЕрддреНрдпрд╛рдзреБрдирд┐рдХ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИред

рдЧрддрд┐ рдФрд░ рд╡рд╣рдиреАрдпрддрд╛ рдХреЗ рдХрд╛рд░рдг, рдпрд╣ рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рд╛, рдХреЛрдб рд╡реНрдпрд╛рдЦреНрдпрд╛ рддреИрдпрд╛рд░ рдХрд░рдиреЗ, рдпрд╛ рдкреНрд░рддрд┐рдпреЛрдЧреА рдЧрдгрд┐рдд рдкреНрд░рд╢реНрдиреЛрдВ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдЬреИрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЖрджрд░реНрд╢ рд╣реИред рдЗрд╕рдХреА рдкреНрд░рдореБрдЦ рдЦреВрдмрд┐рдпрд╛рдБ рд╣реИрдВ:

  • рдЕрдкрдиреЗ рдЖрдХрд╛рд░ рдХреЗ рд╣рд┐рд╕рд╛рдм рд╕реЗ рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЧрдгрд┐рдд рдФрд░ рдХреЛрдбрд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рдиред
  • рдХрдо рд╡рд┐рд▓рдВрдмрддрд╛ рд╡рд╛рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ, рдЬреЛ рдЙрдЪреНрдЪ-рдЖрд╡реГрддреНрддрд┐ рд╡рд╛рд▓реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╣реИрдВред
  • рд╕реНрдореГрддрд┐ рдФрд░ рд▓рд╛рдЧрдд рдХрд╛ рдХреБрд╢рд▓ рдЙрдкрдпреЛрдЧтАФрдбреЗрдореЛ, рдкреНрд░рдпреЛрдЧ рдФрд░ рд╢реЛрдз рдЯреВрд▓реНрд╕ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╣реАред

рдФрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, o4-mini рдкрд░ рдпрд╣ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдмреНрд▓реЙрдЧ рджреЗрдЦреЗрдВред

рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдУрд╡рд░рд╡реНрдпреВ: O4-Mini рдХреЗ рд╕рд╛рде рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ

рд╣рдо рдПрдХ Python-рдЖрдзрд╛рд░рд┐рдд рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ рдпрд╣ рдХрд░ рд╕рдХреЗ:

  • рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдЕрдкрд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рдкреЗрдкрд░ (PDF рдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ) рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ред
  • рдкреЗрдкрд░ рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдирд┐рдХрд╛рд▓рдирд╛ред
  • O4-mini рдХреА рддрд░реНрдХ-рдХреНрд╖рдорддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рддрд╛рд░реНрдХрд┐рдХ рдЦрд╛рдорд┐рдпреЛрдВ рдпрд╛ рдХрдордЬрд╝реЛрд░ рддрд░реНрдХреЛрдВ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░рдирд╛ред
  • рдХрдордЬрд╝реЛрд░рд┐рдпреЛрдВ рдФрд░ рд╕реБрдЭрд╛рд╡реЛрдВ рдХреА рд╕рдВрд░рдЪрд┐рдд рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ред

рдпрд╣ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдкреВрд░реА рддрд░рд╣ рд▓реЛрдХрд▓ рд╣реИ рдФрд░ OpenAI рдХреЗ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЪрд░рдг 1: OpenAI API рдХреЗ рдЬрд░рд┐рдП O4-Mini рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ

o4-mini рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ OpenAI рд╕реЗ API рдХреБрдВрдЬреА рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдХрд░реЗрдВ:

  1. рдпрд╣рд╛рдБ рдЬрд╛рдПрдБ https://platform.openai.com/account/api-keys
  2. рд▓реЙрдЧрд┐рди рдХрд░реЗрдВ рдФрд░ Create new secret key рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВред
  3. рдЗрд╕реЗ рдирд╛рдо рджреЗрдВ (рдЙрджрд╛., "o4-mini-key") рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣реЗрдЬреЗрдВред
  4. рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВ рдХрд┐ рдЖрдк рдЕрдкрдиреЗ рдЦрд╛рддреЗ рдореЗрдВ рдХреНрд░реЗрдбрд┐рдЯ рдЬреЛрдбрд╝ рджреЗрдВ billing section рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗред

рдЕрдм рдЖрдк рдкреНрд░рдорд╛рдгреАрдХреГрдд рд╣реЛрдХрд░ Python рд╕реЗ API рдХреЙрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЪрд░рдг 2: рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░реЗрдВ

рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдиреЗ рдФрд░ рд╣рдорд╛рд░реЗ API рдХреБрдВрдЬреА рдХреЗ рд▓рд┐рдП рдПрдХ environment variable рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

pip install openai PyMuPDF tiktoken numpy 
export OPENAI_API_KEY =тАЭ YOUR_KEYтАЭ

рдЪрд░рдг 3: рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╣реЗрд▓реНрдкрд░ рдХреЛрдб

рдЕрдм рдЬрдмрдХрд┐ рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рд╕реЗрдЯ рд╣реЛ рдЧрдИ рд╣реИрдВ, рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рдпреЗ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдиреЗ рдкрд░ LLM рджреНрд╡рд╛рд░рд╛ рдЯреВрд▓ рдХреЙрд▓реНрд╕ рдХреЗ рдЬрд╝рд░рд┐рдП рдЪрд▓рд╛рдП рдЬрд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг 3.1: рдЗрдВрдкреЛрд░реНрдЯреНрд╕

рдпреЗ рдЗрдВрдкреЛрд░реНрдЯреНрд╕ t-test, standard error, рдФрд░ confidence interval рдХреА рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред

from scipy.stats import ttest_ind, sem, t
import numpy as np

рдЪрд░рдг 3.2: p-value рдкреБрдирд░реНрдЧрдгрдирд╛

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рджреЛ рд╕реНрд╡рддрдВрддреНрд░ рд╕реИрдВрдкрд▓ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмреАрдЪ Welch рдХрд╛ t-test рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд░рд┐рдХрд▓реНрдкрдирд╛ рдХреА рдЬрд╛рдБрдЪ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рджреЛрдиреЛрдВ рд╕рдореВрд╣реЛрдВ рдХреЗ рдФрд╕рдд рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реИрдВ рдпрд╛ рдирд╣реАрдВред

def recalculate_p_value(group1, group2):
    t_stat, p_value = ttest_ind(group1, group2, equal_var=False)
    return {"p_value": round(p_value, 4)}

recalculate_p_value() рдлрд╝рдВрдХреНрд╢рди p-value рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЪрд╛рд░ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рддрдХ рд░рд╛рдЙрдВрдб рдХрд┐рдпрд╛ рд╣реБрдЖ, рдЬреЛ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рджреЗрдЦрд╛ рдЧрдпрд╛ рдЕрдВрддрд░ рд╕рдВрдпреЛрдЧ рд╕реЗ рд╣реЛрдиреЗ рдХреА рдХрд┐рддрдиреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред рдЗрд╕рд╕реЗ LLM рдХреЛ рд╢реЛрдз-рдкрддреНрд░ рдореЗрдВ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдорд╣рддреНрд╡ рдХреЗ рджрд╛рд╡реЛрдВ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓рддреА рд╣реИред

рдЪрд░рдг 3.3: CohenтАЩs d рдХреА рдЧрдгрдирд╛

CohenтАЩs d рджреЛ рд╕рдореВрд╣реЛрдВ рдХреЗ рдмреАрдЪ effect size рдХрд╛ рдорд╛рдирдХреАрдХреГрдд рдорд╛рдк рд╣реИред рдпрд╣ рдкрд╣рд▓реЗ рдкреНрд░рддреНрдпреЗрдХ рд╕рдореВрд╣ рдХреЗ рдФрд╕рдд рдФрд░ рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдлрд┐рд░, рдорд┐рд╢реНрд░рд┐рдд рдорд╛рдирдХ рд╡рд┐рдЪрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдФрд╕рдд рдХреЗ рдЕрдВрддрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХрд░рддрд╛ рд╣реИред

def compute_cohens_d(group1, group2):
    mean1, mean2 = np.mean(group1), np.mean(group2)
    std1, std2 = np.std(group1, ddof=1), np.std(group2, ddof=1)
    pooled_std = np.sqrt((std1**2 + std2**2) / 2)
    d = (mean1 - mean2) / pooled_std
    return {"cohens_d": round(d, 4)}

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди CohenтАЩs d рдХрд╛ рдорд╛рди рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЪрд╛рд░ рджрд╢рдорд▓рд╡ рд╕реНрдерд╛рди рддрдХ рд░рд╛рдЙрдВрдб рдХрд┐рдпрд╛ рд╣реБрдЖред рдпрд╣ LLM рдХреЛ рд╕рдореВрд╣реЛрдВ рдХреЗ рдЕрдВрддрд░ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдорд╣рддреНрд╡ (рд╕рд┐рд░реНрдл рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдирд╣реАрдВ) рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИтАФрдЦрд╛рд╕рдХрд░ рддрдм рдЬрдм рд╕реИрдВрдкрд▓ рдЖрдХрд╛рд░ рдмрдбрд╝рд╛ рд╣реЛ рдФрд░ рдЕрдХреЗрд▓реЗ p-value рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рди рджреЗред

рдЪрд░рдг 3.4: Confidence interval рдХреА рдЧрдгрдирд╛

рдЕрдм рд╣рдо рдПрдХ рд╣реЗрд▓реНрдкрд░ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХрд┐рд╕реА рдПрдХ рд╕реИрдВрдкрд▓ рд╕рдореВрд╣ рдХреЗ рд▓рд┐рдП confidence interval рдирд┐рдХрд╛рд▓рддрд╛ рд╣реИред Confidence interval рдЗрд╕ рдмрд╛рдд рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдЕрдиреБрдорд╛рдирд┐рдд рдФрд╕рдд рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд┐рддрдиреА рдЕрдирд┐рд╢реНрдЪрд┐рддрддрд╛ рд╣реИтАФрджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдФрд╕рдд рдорд╛рди рдХреЗ рдЖрд╕рдкрд╛рд╕ рдХрд╛ рднрд░реЛрд╕реЗрдордВрдж рджрд╛рдпрд░рд╛ред

 
def compute_confidence_interval(data, confidence=0.95):
    data = np.array(data)
    n = len(data)
    mean = np.mean(data)
    margin = sem(data) * t.ppf((1 + confidence) / 2., n-1)
    return {
        "mean": round(mean, 4),
        "confidence_interval": [round(mean - margin, 4), round(mean + margin, 4)],
        "confidence": confidence
    }

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд▓реМрдЯрд╛рддрд╛ рд╣реИ:

  • mean: рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХрд╛ рдФрд╕рдд рдорд╛рдиред
  • confidence_interval: рдирд┐рдЪрд▓реА рдФрд░ рдКрдкрд░реА рд╕реАрдорд╛рдПрдБ рджрд░реНрд╢рд╛рдиреЗ рд╡рд╛рд▓реА рд╕реВрдЪреА, рдЬрд┐рдирдХреЗ рднреАрддрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ confidence рд╕реНрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдФрд╕рдд рдЖрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реЛрддреА рд╣реИред
  • confidence: рдЗрдВрдЯрд░рд╡рд▓ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпреБрдХреНрдд confidence рд╕реНрддрд░ред

рдЪрд░рдг 3.5: рд╕рдореВрд╣ рд╕рд╛рдВрдЦреНрдпрд┐рдХреА

рд╣рдо рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХрд╛ рд╕рдорд╛рдкрди рдПрдХ рд╕рд░рд▓ рд╣реЗрд▓реНрдкрд░ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ mean, standard deviation, рдФрд░ sample size рдХрд╛ рд╕рд╛рд░ рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИред

def describe_group(data):
    data = np.array(data)
    return {
        "mean": round(np.mean(data), 4),
        "std_dev": round(np.std(data, ddof=1), 4),
        "n": len(data)
    }

рдпрд╣ LLM рдХреЛ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рд╡рд┐рддрд░рдг рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЗ рдЖрдХрд▓рди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рдВрджрд░реНрдн рдорд┐рд▓рддрд╛ рд╣реИред mean, standard deviation рдФрд░ count рдЬреИрд╕реЗ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд░реНрдгрдиреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░рдХреЗ, рд╣рдорд╛рд░реЗ рд╣реЗрд▓реНрдкрд░ рдЯреВрд▓реНрд╕ рдореЙрдбрд▓ рдХреА рд╢реЛрдз-рдкрддреНрд░реЛрдВ рдореЗрдВ рдкрд╛рдП рдЧрдП рдкреНрд░рдпреЛрдЧреЛрдВ рдФрд░ рджрд╛рд╡реЛрдВ рдкрд░ рддрд░реНрдХ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рддреЗ рд╣реИрдВред

рдЪрд░рдг 4: рдЯреВрд▓ рд╕рдкреЛрд░реНрдЯ рдХреЗ рд╕рд╛рде рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ

рдЗрд╕ рднрд╛рдЧ рдореЗрдВ, рд╣рдо Python-рдЖрдзрд╛рд░рд┐рдд рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ рдмрдирд╛рдПрдВрдЧреЗ рдЬреЛ OpenAI рдХреЗ o4-mini API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЗ рд▓рд┐рдП рдЯреВрд▓ рд╕рдкреЛрд░реНрдЯ рд╢рд╛рдорд┐рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ рдореЙрдбрд▓ рдХрдареЛрд░ рдореВрд▓реНрдпрд╛рдВрдХрди рдФрд░ рдбреЗрдЯрд╛-рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рд▓реЛрдЪрдирд╛рдПрдБ рдХрд░ рд╕рдХреЗред

рдЪрд░рдг 4.1: рдЗрдВрдкреЛрд░реНрдЯреНрд╕

рд╣рдо рдЕрдкрдиреЗ рдореБрдЦреНрдп рдХреЛрдб рдХреА рд╢реБрд░реБрдЖрдд рдХреБрдЫ рдЖрд╡рд╢реНрдпрдХ рд▓рд╛рдЗрдмреНрд░реЗрд░реАрдЬрд╝ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ PDF рд╕рд╛рдордЧреНрд░реА рдирд┐рдХрд╛рд▓реА рдЬрд╛ рд╕рдХреЗ, рдЙрд╕реЗ рдЯреЛрдХрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ, рдФрд░ OpenAI API рд╕реЗ рд╕рдВрд╡рд╛рдж рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред

import os
import fitz 
import openai
import json
import tiktoken
from statistics_helper import (
    recalculate_p_value,
    compute_cohens_d,
    compute_confidence_interval,
    describe_group
)
openai.api_key = os.getenv("OPENAI_API_KEY")

рдЖрдЗрдП рдЕрдм рдкреВрд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдЪрд░рдг-рджрд░-рдЪрд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред

рдЪрд░рдг 4.2: PDF рд╕реЗ рдЯреЗрдХреНрд╕реНрдЯ рдирд┐рдХрд╛рд▓реЗрдВ

рд╣рдо рд╢реЛрдз-рдкрддреНрд░ рд╕реЗ рдХрдЪреНрдЪрд╛ рдЯреЗрдХреНрд╕реНрдЯ рдкрдврд╝рдиреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред fitz рд▓рд╛рдЗрдмреНрд░реЗрд░реА рд╣рдореЗрдВ рд╕рднреА рдкреГрд╖реНрдареЛрдВ рдкрд░ рдЗрдЯрд░рд░реЗрдЯ рдХрд░рдиреЗ рдФрд░ рдирд┐рдХрд╛рд▓реЗ рдЧрдП рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рджреЗрддреА рд╣реИред

def extract_text_from_pdf(path):
    doc = fitz.open(path)
    full_text = "\n".join(page.get_text() for page in doc)
    return full_text

рдпрд╣реА рдЖрдзрд╛рд░ рддреИрдпрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм рд╣рдо рдХрдЪреНрдЪреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдореЙрдбрд▓ рдХреЛ рднреЗрдЬрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ рдЯреЛрдХрдирд╛рдЗрдЬрд╝ рдФрд░ рдЪрдВрдХ рдХрд░реЗрдВрдЧреЗред

рдиреЛрдЯ: рдореИрдВрдиреЗ рдбреЗрдореЛ рдХреЗ рд▓рд┐рдП рдЬрд╛рдирдмреВрдЭрдХрд░ рддрд░реНрдХ рдФрд░ рдкреНрд░рдпреЛрдЧрд╛рддреНрдордХ рдбрд┐рдЬрд╝рд╛рдЗрди рдореЗрдВ рдЦрд╛рдорд┐рдпрд╛рдБ рд░рдЦрдиреЗ рд╡рд╛рд▓рд╛ рдирдХрд▓реА рд╢реЛрдз-рдкрддреНрд░ рдмрдирд╛рдпрд╛ рд╣реИред

рдЪрд░рдг 4.3: рдЪрдВрдХрд┐рдВрдЧ

LLM рдореЗрдВ рд╕рдВрджрд░реНрдн рд╕реАрдорд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рд▓рдВрдмреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рдХреЛ рдкреНрд░рдмрдВрдзрдиреАрдп рдЪрдВрдХреНрд╕ рдореЗрдВ рддреЛрдбрд╝рддреЗ рд╣реИрдВред рд╣рдо Tiktoken рдХрд╛ рдЙрдкрдпреЛрдЧ рдореЙрдбрд▓ рдХреА рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╕реНрдХреАрдо рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рдЯреЛрдХрдирд╛рдЗрдЬрд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред

def chunk_text(text, max_tokens=12000, model="o4-mini"):
    encoding = tiktoken.get_encoding("cl100k_base") 
    tokens = encoding.encode(text)
    chunks = []
    for i in range(0, len(tokens), max_tokens):
        chunk = tokens[i:i + max_tokens]
        chunk_text = encoding.decode(chunk)
        chunks.append(chunk_text)
    return chunks

рдпрд╣ рдРрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • рдкрд╣рд▓реЗ рд╣рдо tiktoken рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреВрд░реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ cl100k_base tokenizer рд╕реЗ рдЯреЛрдХрдирд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ GPT-4, GPT-4o, рдФрд░ o4-mini рдЬреИрд╕реЗ рдЖрдзреБрдирд┐рдХ OpenAI рдореЙрдбрд▓реЛрдВ рдХреЗ рд╕рдВрдЧрдд рд╣реИред
  • рдЗрд╕рдХреЗ рдмрд╛рдж рдЯреЛрдХрдирд╛рдЗрдЬрд╝ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдЯреЗрдХреНрд╕реНрдЯ max_tokens рд▓рдВрдмрд╛рдИ рдХреЗ рд╕реЗрдЧрдореЗрдВрдЯреНрд╕ рдореЗрдВ рдмрд╛рдБрдЯрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдЪрдВрдХ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрдордд рдЕрдзрд┐рдХрддрдо рдЗрдирдкреБрдЯ рдЖрдХрд╛рд░ рдХреЗ рднреАрддрд░ рд░рд╣реЗ, рдЬреЛ рдЗрдиреНрдлрд░реЗрдВрд╕ рдХреЗ рджреМрд░рд╛рди рдЯреЛрдХрди рдУрд╡рд░рдлреНрд▓реЛ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред
  • рдлрд┐рд░, рд╣рд░ рдЯреЛрдХрди рдЪрдВрдХ рдХреЛ encoding.decode() рд╕реЗ рд╡рд╛рдкрд╕ рдорд╛рдирд╡-рдкрдардиреАрдп рдЯреЗрдХреНрд╕реНрдЯ рдореЗрдВ рдбрд┐рдХреЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╡рд╛рдХреНрдп рд╡рд┐рдиреНрдпрд╛рд╕ рдФрд░ рдлрд╝реЙрд░реНрдореИрдЯрд┐рдВрдЧ рдмрдиреА рд░рд╣рддреА рд╣реИ рддрд╛рдХрд┐ рдореЙрдбрд▓ рдХреЛ рд╕рдо coh├йrent рд╕рдВрджрд░реНрдн рдорд┐рд▓реЗред
  • рдЕрдВрдд рдореЗрдВ, рд╕рднреА рдбрд┐рдХреЛрдб рдХрд┐рдП рдЧрдП рдЪрдВрдХреНрд╕ рдХреЛ рдПрдХ рд╕реВрдЪреА рдореЗрдВ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдлрд┐рд░ рдпреЗ рдЪрдВрдХреНрд╕ рдПрдХ-рдПрдХ рдХрд░рдХреЗ LLM рдХреЛ рд░рд┐рд╡реНрдпреВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдг, рдпрд╛ рдЬрдирд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рднреЗрдЬреЗ рдЬрд╛рдиреЗ рдХреЛ рддреИрдпрд╛рд░ рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ рдЪрдВрдХрд┐рдВрдЧ рдЪрд░рдг рдЗрдиреНрдлрд░реЗрдВрд╕ рдХреЗ рджреМрд░рд╛рди рдХрдЯрдСрдлрд╝ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдФрд░ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдУрд╡рд░рдлреНрд▓реЛ рдХреЗ рдХрд╛рд░рдг рдХреЛрдИ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдЯреЗрдХреНрд╕реНрдЯ рди рдЫреВрдЯреЗред

рдЪрд░рдг 4.4: рдЯреВрд▓ рдореИрдкрд┐рдВрдЧ

рдореЙрдбрд▓ рдХрд┐рд╕реА рдмрд╛рд╣рд░реА рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХреЗ, рдЙрд╕рд╕реЗ рдкрд╣рд▓реЗ рд╣рдореЗрдВ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдореЛрдВ (рдЬреЛ рдореЙрдбрд▓ рджреЗрдЦрддрд╛ рд╣реИ) рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Python рдлрд╝рдВрдХреНрд╢рдВрд╕ (рдЬреЛ рдЪрд▓реЗрдВрдЧреЗ) рдХреЗ рдмреАрдЪ рдореИрдкрд┐рдВрдЧ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреА рд╣реЛрдЧреАред рдпрд╣ рдореИрдкрд┐рдВрдЧ рдореЙрдбрд▓ рдХреА рдЯреВрд▓ рдХреЙрд▓реНрд╕ рдФрд░ рд╣рдорд╛рд░реА рд▓реЛрдХрд▓ рдХреЛрдбрдмреЗрд╕ рдХреЗ рдмреАрдЪ рдкреБрд▓ рдХрд╛ рдХрд╛рдо рдХрд░рддреА рд╣реИред

tool_function_map = {
    "recalculate_p_value": recalculate_p_value,
    "compute_cohens_d": compute_cohens_d,
    "compute_confidence_interval": compute_confidence_interval,
    "describe_group": describe_group,
}

рдЗрд╕ рдбрд┐рдХреНрд╢рдирд░реА рдХреА рдкреНрд░рддреНрдпреЗрдХ рдХреБрдВрдЬреА рдЙрд╕ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддреА рд╣реИ рдЬрд┐рд╕рдХрд╛ рд╕рдВрджрд░реНрдн рдореЙрдбрд▓ рдЯреВрд▓ рдХреЙрд▓ рдХреЗ рджреМрд░рд╛рди рджреЗ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдорд╛рди statistics_helper рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЗрдВрдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ Python рдлрд╝рдВрдХреНрд╢рди рд╣реИред

рдЪрд░рдг 4.5: рдЯреВрд▓ рдлрд╝рдВрдХреНрд╢рдВрд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ

рдореЙрдбрд▓ рдХреА рддрд░реНрдХ-рдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдРрд╕реЗ рдЯреВрд▓ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ LLM function calling рдХреЗ рдЬрд╝рд░рд┐рдП рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдпреЗ рдЯреВрд▓ p-value рдкреБрдирд░реНрдЧрдгрдирд╛, confidence interval, рдФрд░ effect size рдЬреИрд╕реА рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВред

tools = [
            {
                "type": "function",
                "name": "recalculate_p_value",
                "description": "Calculate p-value between two sample groups",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "group1": {"type": "array", "items": {"type": "number"}},
                        "group2": {"type": "array", "items": {"type": "number"}}
                    },
                    "required": ["group1", "group2"]
                }
            },
            {
                "type": "function",
                "name": "compute_cohens_d",
                "description": "Compute effect size (Cohen's d) between two groups",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "group1": {"type": "array", "items": {"type": "number"}},
                        "group2": {"type": "array", "items": {"type": "number"}}
                    },
                    "required": ["group1", "group2"]
                }
            },
            {
                "type": "function",
                "name": "compute_confidence_interval",
                "description": "Compute confidence interval for a sample group",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "data": {"type": "array", "items": {"type": "number"}},
                        "confidence": {"type": "number", "default": 0.95}
                    },
                    "required": ["data"]
                }
            },
            {
                "type": "function",
                "name": "describe_group",
                "description": "Summarize sample mean, std deviation, and count",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "data": {"type": "array", "items": {"type": "number"}}
                    },
                    "required": ["data"]
                }
            }
        ]

рдЙрдкрд░реЛрдХреНрдд рдЯреВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ LLM рдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рджреЗрддреА рд╣реИ:

  • рдЯреВрд▓ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ (description)
  • рдЯреВрд▓ рдХреЛ рдХреИрд╕реЗ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ (name)
  • рдпрд╣ рдХрд┐рди рдЗрдирдкреБрдЯреНрд╕ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдлрд╝реАрд▓реНрдб рдФрд░ рдкреНрд░рдХрд╛рд░ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХреА рдРрд░реЗ)

LLM рд░рд┐рд╡реНрдпреВ рдХреЗ рд╕рдВрджрд░реНрдн рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмреБрджреНрдзрд┐рдорд╛рдиреА рд╕реЗ рддрдп рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрдм рдХрд┐рд╕реА рдЯреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реИ, рдЬреИрд╕реЗ p-value рдХреА рдкреБрдирд░реНрдЧрдгрдирд╛ред рдЬрдм рдЙрд╕реЗ рдХреЛрдИ рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рджрд╛рд╡рд╛ рдпрд╛ рд╕рдВрджрд┐рдЧреНрдз рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЙрдкрдпреБрдХреНрдд рд╣реЗрд▓реНрдкрд░ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдЙрд╕реА рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЕрдкрдиреА рддрд░реНрдХ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рдЕрдзрд┐рдХ рдХрдареЛрд░ рдФрд░ рдЖрдзрд╛рд░-рд╕рддреНрдпрд╛рдкрд┐рдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕рдВрднрд╡ рд╣реЛрддрд╛ рд╣реИ, рдЬрд╣рд╛рдБ рдореЙрдбрд▓ рдХреЗрд╡рд▓ рдЖрд▓реЛрдЪрдирд╛ рд╣реА рдирд╣реАрдВ рдХрд░рддрд╛ рдмрд▓реНрдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдбреЗрдЯрд╛ рдХрд╛ рд╕рддреНрдпрд╛рдкрди рднреА рдХрд░рддрд╛ рд╣реИред

рдЪрд░рдг 4.6: рдЪрдВрдХ рдХреА рд╕рдореАрдХреНрд╖рд╛

рдЕрдм рд╣рдо рдореБрдЦреНрдп рд▓реЙрдЬрд┐рдХ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкреНрд░рддреНрдпреЗрдХ рдЯреЗрдХреНрд╕реНрдЯ рдЪрдВрдХ рдХреЛ o4-mini рдореЙрдбрд▓ рдХреЛ рднреЗрдЬрддрд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдХреЛрдИ рдЯреВрд▓ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХреЛ рд╕рдВрднрд╛рд▓рддреЗ рд╣реИрдВ рдФрд░ рдмрд╛рддрдЪреАрдд рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВред

def review_text_chunk(chunk):
    try:
        response = client.responses.create(
            model="o4-mini",
            reasoning={"effort": "high"},
            input=[
                {
                    "role": "system",
                    "content": (
                        "You are an expert AI research reviewer. Read the given chunk of a research paper and highlight weak arguments."
                        "unsupported claims, or flawed methodology. You can request tools to: Recalculate p-values, Compute confidence intervals, "
                        "Estimate effect size (Cohen's d), Describe sample statistics. Be rigorous and explain your reasoning. "
                        "Conclude with suggestions and a verdict."
                    )
                },
                {
                    "role": "user",
                    "content": chunk
                }
            ],
            tools = tools,
        )
        # Check for tool calls
        for item in response.output:
            if getattr(item, "type", None) == "function_call":
                fn_call = getattr(item, "function_call", {})
                fn_name = getattr(fn_call, "name", "")
                args = getattr(fn_call, "arguments", {})
                if fn_name in tool_function_map:
                    tool_result = tool_function_map[fn_name](**args)
                    # Send back tool result as continuation input
                    tool_response = client.responses.create(
                        model="o4-mini",
                        reasoning={"effort": "high"},
                        input=[
                            *response.output,
                            {
                                "role": "tool",
                                "name": fn_name,
                                "content": str(tool_result)
                            }
                        ],
                        max_output_tokens=3000
                    )
                    if hasattr(tool_response, "output_text") and tool_response.output_text:
                        return tool_response.output_text.strip()
        # If no tool was called, return original response
        if hasattr(response, "output_text") and response.output_text:
            return response.output_text.strip()
        if response.status == "incomplete":
            reason = getattr(response.incomplete_details, "reason", "unknown")
            return f" Incomplete response: {reason}"
        return " No valid output returned by the model."
    except Exception as e:
        return f" Error during chunk review: {e}"

review_text_chunk рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рдХреЛ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдФрд░ рдЯреВрд▓ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдХреЗ рд╕рд╛рде LLM рдХреЛ рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИред рдпрд╣ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдРрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  1. рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдкрд░рд┐рднрд╛рд╖рд╛: рдПрдХ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдореЙрдбрд▓ рдХреЛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ AI рд╢реЛрдз рд╕рдореАрдХреНрд╖рдХ рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрджреЗрд╢ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдореЙрдбрд▓ рд╕реЗ рдХрд╣рддрд╛ рд╣реИ:
    • рд╢реЛрдз-рдкрддреНрд░ рдХреЗ рдЪрдВрдХ рдХрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░реЗрдВ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдЦрд╛рдорд┐рдпреЛрдВ, рдЕрд╕рдорд░реНрдерд┐рдд рджрд╛рд╡реЛрдВ, рдФрд░ рдХрд╛рд░реНрдпрдкреНрд░рдгрд╛рд▓реА рдХреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдкрд╣рдЪрд╛рди рдХрд░реЗрдВред
    • рд╕рд╛рде рд╣реА рдореЙрдбрд▓ рдХреЛ рдкрд┐рдЫрд▓реЗ рд╕реЗрдХреНрд╢рди рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдЯреВрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░реЗрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкреНрд░реЙрдореНрдкреНрдЯ LLM рдХреА рднреВрдорд┐рдХрд╛ рддрдп рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рдЧрд╣рд░рд╛рдИ рдХреА рдУрд░ рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
  1. рдкреНрд░рд╛рд░рдВрднрд┐рдХ рддрд░реНрдХ рдореЙрдбрд▓ рдХреЙрд▓: рд╢реЛрдз-рдкрддреНрд░ рдЪрдВрдХ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдкреНрд░реЙрдореНрдкреНрдЯ рдХреЛ client.responses.create() рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рддрд░реНрдХ рдХреЗ рд▓рд┐рдП Responses API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдХреЙрд▓ рдореЗрдВ:
    • рдореЙрдбрд▓ "o4-mini" рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ reasoning={"effort": "high"} рдлреНрд▓реИрдЧ high рдкрд░ рд╕реЗрдЯ рд╣реИ, рдЬреЛ рд╡рд┐рд╕реНрддреГрдд рдмрд╣реБ-рдЪрд░рдгреАрдп рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рддрд╛ рд╣реИред рдпрд╣ рд╕реЗрдЯрд┐рдВрдЧ рдореЙрдбрд▓ рдХреЛ рдмрддрд╛рддреА рд╣реИ рдХрд┐ рдЕрдВрддрд┐рдо рдЙрддреНрддрд░ рджреЗрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕реЗ рдХрд┐рддрдиреА рдЧрд╣рд░рд╛рдИ рд╕реЗ тАЬрд╕реЛрдЪрдирд╛тАЭ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛ рд╕рдХрдиреЗ рд╡рд╛рд▓реЗ рдЖрдВрддрд░рд┐рдХ рддрд░реНрдХ рдЯреЛрдХрди рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рддреА рд╣реИред
    • tools рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдЬрд░рд┐рдП рдореЙрдбрд▓ рдХреЛ рдЙрдкрд▓рдмреНрдз рдлрд╝рдВрдХреНрд╢рди рдЯреВрд▓реНрд╕ рдХреА рд╕реВрдЪреА рджреА рдЬрд╛рддреА рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╡рд╣ рдХреЙрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реИред
    • рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ tool_choice="auto" рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Responses API рдЯреВрд▓ рдЙрдкрдпреЛрдЧ рдХрд╛ рдирд┐рд░реНрдгрдп рд╕реНрд╡рдпрдВ рдХрд░рддрд╛ рд╣реИред
  1. рдЯреВрд▓ рдЙрдкрдпреЛрдЧ рд╣реИрдВрдбрд▓рд┐рдВрдЧ: рдпрджрд┐ рдореЙрдбрд▓ рдХрд┐рд╕реА рдЯреВрд▓ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддрд╛ рд╣реИ, рддреЛ рд╣рдо:
    • рд╕рдВрд░рдЪрд┐рдд рд░рд┐рд╕реНрдкреЙрдиреНрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рдЬрд╛рдБрдЪ рдХрд░рдХреЗ рдЯреВрд▓ рдХреЙрд▓ рд╕реЗ рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо рдФрд░ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред
    • рдлрд┐рд░, рдЙрдиреНрд╣реАрдВ рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЛрдХрд▓ Python рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВред
    • рдЕрдВрдд рдореЗрдВ, рдЯреВрд▓ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ responses.create рдХреА рджреВрд╕рд░реА рдХреЙрд▓ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ "tool" рднреВрдорд┐рдХрд╛ рд╡рд╛рд▓реЗ рд╕рдВрджреЗрд╢ рдХреЗ рд░реВрдк рдореЗрдВ рдЬреЛрдбрд╝рдХрд░ рдореЙрдбрд▓ рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬрддреЗ рд╣реИрдВред рдпрд╣ рддрд░реНрдХ-рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдирд┐рд░рдВрддрд░рддрд╛ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░рддрд╛ рд╣реИред
  1. рдкрд░рд┐рдгрд╛рдо рдХреА рд╡реНрдпрд╛рдЦреНрдпрд╛: рдпрджрд┐ рдХреЛрдИ рдЯреВрд▓ рдХреЙрд▓ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдореЙрдбрд▓ рд▓реМрдЯреЗ рдкрд░рд┐рдгрд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХреЛ рдкрд░рд┐рд╖реНрдХреГрдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдзрд┐рдХ рд╕реВрдЪрд┐рдд, рдбреЗрдЯрд╛-рд╕рдорд░реНрдерд┐рдд рд╕рдорд╛рд▓реЛрдЪрдирд╛ рджреЗрддрд╛ рд╣реИред рдпрджрд┐ рдХрд┐рд╕реА рдЯреВрд▓ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА, рддреЛ рдпрд╣ рдкрд╣рд▓реА рдХреЙрд▓ рд╕реЗ рд╣реА рдЕрдкрдирд╛ рдирд┐рд░реНрдгрдп рд╡рд╛рдкрд╕ рдХрд░рддрд╛ рд╣реИред

рдпрд╣реА рдмрд╣реБ-рдЪрд░рдгреАрдп рддрд░реНрдХ рдФрд░ рд╕рддреНрдпрд╛рдкрди рддрдВрддреНрд░ рдореЙрдбрд▓ рдХреЛ рдХрдареЛрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреНрд╖рдорддрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЙрд╕реА рддрд░рд╣ рд╣реИ рдЬреИрд╕реЗ рдХреЛрдИ рдорд╛рдирд╡ рд╕рдореАрдХреНрд╖рдХ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреЗ, рддреНрд╡рд░рд┐рдд рдЧрдгрдирд╛ рдХрд░реЗ, рдФрд░ рдЙрд╕рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдкрдиреА рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░реЗред

рдЪрд░рдг 4.7: рдкреВрд░реЗ рдкреЗрдкрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛

рдЬрдм рд╕рднреА рдШрдЯрдХ рддреИрдпрд╛рд░ рд╣реЛ рдЬрд╛рдПрдБ, рддреЛ рд╣рдо рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдкреВрд░реЗ PDF рдХреЛ рдкреНрд░реЛрд╕реЗрд╕ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдпрд╣ рд╕рдмрдХреБрдЫ рдПрдХ рд╕рд╛рде рдмрд╛рдБрдзрддрд╛ рд╣реИред

def review_full_pdf(pdf_path):
    raw_text = extract_text_from_pdf(pdf_path)
    chunks = chunk_text(raw_text)
    print(f"\n Extracted {len(chunks)} chunks from PDF\n")
    all_reviews = []
    for idx, chunk in enumerate(chunks):
        print(f"\n  Reviewing Chunk {idx + 1}/{len(chunks)}...")
        review = review_text_chunk(chunk)
        all_reviews.append(f"### Chunk {idx + 1} Review\n{review}")
    full_review = "\n\n".join(all_reviews)
    return full_review

рдпрд╣ рдлрд╝рдВрдХреНрд╢рди рдкреВрд░реЗ рд╢реЛрдз-рдкрддреНрд░ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд░реИрдкрд░ рдХреА рддрд░рд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:

  • рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдирд┐рдХрд╛рд▓рддрд╛ рдФрд░ рдЪрдВрдХ рдХрд░рддрд╛ рд╣реИред
  • рдлрд┐рд░, рдкреНрд░рддреНрдпреЗрдХ рдЪрдВрдХ рдХреЛ рдХреНрд░рдо рд╕реЗ рд╕рдореАрдХреНрд╖рд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдЧреБрдЬрд╛рд░рддрд╛ рд╣реИред
  • рдЕрдВрддрддрдГ, рд╕рднреА рдЖрдЙрдЯрдкреБрдЯреНрд╕ рдХреЛ рдПрдХрд▓ рд░рд┐рдкреЛрд░реНрдЯ рдореЗрдВ рд╕рдореЗрдХрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдЪрд░рдг 4.8: рдореБрдЦреНрдп рдлрд╝рдВрдХреНрд╢рди

рдЕрдм рд╣рдо рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдПрдВрдЯреНрд░реА рдкреНрд╡рд╛рдЗрдВрдЯ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЯрд░реНрдорд┐рдирд▓ рд╕реЗ рд╕реАрдзреЗ рдПрдХ PDF рдлрд╝рд╛рдЗрд▓ рдкрд╛рде рдХреЗ рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

if __name__ == "__main__":
    import argparse
    parser = argparse.ArgumentParser(description="Review an academic paper PDF for weak arguments.")
    parser.add_argument("pdf_path", type=str, help="Path to the research paper PDF")
    args = parser.parse_args()
    review_output = review_full_pdf(args.pdf_path)
    print("\n Final Aggregated Review:\n")
    print(review_output)
    with open("paper_review_output.md", "w") as f:
        f.write(review_output)
    print("\n Review saved to paper_review_output.md")

рдпрд╣ рдмреНрд▓реЙрдХ рдирд┐рдореНрди рдХрд░рддрд╛ рд╣реИ:

  • argparse рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдЖрд░реНрдЧреНрдпреБрдореЗрдВрдЯ рдХреЗ рд░реВрдк рдореЗрдВ PDF рдХрд╛ рдкрд╛рде рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИред
  • review_full_pdf() рдлрд╝рдВрдХреНрд╢рди рдХреЙрд▓ рдХрд░рдХреЗ рдкреВрд░рд╛ рд░рд┐рд╡реНрдпреВ рдЬрдирд░реЗрдЯ рдХрд░рддрд╛ рд╣реИред
  • рдЕрдВрддрд┐рдо рдкрд░рд┐рдгрд╛рдо рдХрдВрд╕реЛрд▓ рдкрд░ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИред
  • рдЕрдВрдд рдореЗрдВ, рд░рд┐рд╡реНрдпреВ рдХреЛ Markdown рдлрд╝реЙрд░реНрдореИрдЯ (paper_review_output.md) рдореЗрдВ рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧ рдпрд╛ рдПрдХреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрддрд╛ рд╣реИред

рдЗрд╕ рдХреЛрдб рдХреЛ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯрд░реНрдорд┐рдирд▓ рдореЗрдВ рдирд┐рдореНрди рдХрдорд╛рдВрдб рдЯрд╛рдЗрдк рдХрд░реЗрдВ:

python pdf_reviewer_assistant.py Fake_paper.pdf

o4-mini рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреЗрдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдЖрдЙрдЯрдкреБрдЯ

o4-mini рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдкреЗрдкрд░ рд╕рдореАрдХреНрд╖рд╛ рдЖрдЙрдЯрдкреБрдЯ

рдирд┐рд╖реНрдХрд░реНрд╖

рдЗрд╕ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ, рд╣рдордиреЗ OpenAI рдХреЗ o4-mini рдореЙрдбрд▓ API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╢реЛрдз-рдкрддреНрд░ рд╕рдореАрдХреНрд╖рдХ рдмрдирд╛рдпрд╛ред рд╣рдордиреЗ рд╡рд╛рд╕реНрддрд╡рд┐рдХ-рд╕рдордп рд╕рд╛рдВрдЦреНрдпрд┐рдХреАрдп рдЯреВрд▓реНрд╕ рдХреЛ рдПрдХреАрдХреГрдд рдХрд░рдХреЗ рдореЙрдбрд▓ рдХреА рдХреНрд╖рдорддрд╛ рдмрдврд╝рд╛рдИ, рдЬрд┐рд╕рд╕реЗ рдпрд╣ p-value, confidence interval, рдФрд░ effect size рдХрд╛ рдкреБрдирдГрд╡рд┐рд╢реНрд▓реЗрд╖рдг рдХрд░ рд╕рдХреЗред

рдпрд╣ рдбреЗрдореЛ рднрд╡рд┐рд╖реНрдп рдореЗрдВ PDF UI, citation рдЪреЗрдХрд░, рдпрд╛ рдпрд╣рд╛рдБ рддрдХ рдХрд┐ рдорд▓реНрдЯреАрдореЙрдбрд▓ рд╢реЛрдз рд╕рд╣рд╛рдпрдХ рдЯреВрд▓реНрд╕ рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рдорд╛рд░реНрдЧ рдкреНрд░рд╢рд╕реНрдд рдХрд░рддрд╛ рд╣реИред

рд╣рд╛рд▓ рдХреЗ OpenAI рд░рд┐рд▓реАрдЬрд╝ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП, рдпреЗ рдмреНрд▓реЙрдЧ рджреЗрдЦреЗрдВ:

Aashi Dutt

рд▓реЗрдЦрдХ

Aashi Dutt

рдореИрдВ рдПрдордПрд▓ (Gen AI) рдореЗрдВ Google Developers Expert, Kaggle 3x Expert, рдФрд░ Women Techmakers рдПрдВрдмреЗрд╕рдбрд░ рд╣реВрдБ, рддрдерд╛ рддрдХрдиреАрдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ 3+ рд╡рд░реНрд╖реЛрдВ рдХрд╛ рдЕрдиреБрднрд╡ рд░рдЦрддреА рд╣реВрдБред рдореИрдВрдиреЗ 2020 рдореЗрдВ рдПрдХ рд╣реЗрд▓реНрде-рдЯреЗрдХ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдХреА рд╕рд╣-рд╕реНрдерд╛рдкрдирд╛ рдХреА рдФрд░ рд╡рд░реНрддрдорд╛рди рдореЗрдВ Georgia Tech рд╕реЗ рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ рдорд╛рд╕реНрдЯрд░ рдХрд░ рд░рд╣реА рд╣реВрдБ, рдЬрд┐рд╕рдореЗрдВ рдореЗрд░рд╛ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮрддрд╛ рдХреНрд╖реЗрддреНрд░ рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рд╣реИред

рд╡рд┐рд╖рдп