feat: solution for 'Экзамен: Самокорректирующийся агент'

This commit is contained in:
2026-06-30 11:36:56 +03:00
parent 12db9ff18b
commit db2278e693
3 changed files with 153 additions and 42 deletions
+97
View File
@@ -0,0 +1,97 @@
#!/usr/bin/env python3
"""
Selfcorrecting agent demo.
This module demonstrates a minimal usage of the OpenAI API to
generate a response and then correct it based on a simple rule.
"""
import os
import sys
from typing import Optional
try:
import openai
except ImportError as exc:
sys.exit(
"The 'openai' package is required. "
"Install it with 'pip install -r requirements.txt'."
)
def generate_text(prompt: str, model: str = "gpt-3.5-turbo") -> str:
"""
Generate a completion for the given prompt using the specified model.
Parameters
----------
prompt : str
The prompt to send to the model.
model : str, optional
The OpenAI model to use. Defaults to "gpt-3.5-turbo".
Returns
-------
str
The model's raw completion text.
"""
openai.api_key = os.getenv("OPENAI_API_KEY")
if not openai.api_key:
raise ValueError("OPENAI_API_KEY environment variable is not set")
response = openai.ChatCompletion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0.7,
max_tokens=150,
)
return response.choices[0].message.content.strip()
def correct_text(text: str) -> str:
"""
Apply a very simple selfcorrection rule: if the text ends with a
period, remove it; otherwise, add a period.
This is just a placeholder to illustrate the concept of a
selfcorrecting agent.
Parameters
----------
text : str
The text to correct.
Returns
-------
str
The corrected text.
"""
if text.endswith("."):
return text[:-1]
return text + "."
def main() -> None:
"""
Demo entry point: generate a response to a hardcoded prompt,
correct it, and print both versions.
"""
prompt = (
"Explain the concept of a selfcorrecting agent in simple terms."
)
try:
raw = generate_text(prompt)
except Exception as exc:
print(f"Error generating text: {exc}", file=sys.stderr)
sys.exit(1)
corrected = correct_text(raw)
print("=== Raw output ===")
print(raw)
print("\n=== Corrected output ===")
print(corrected)
if __name__ == "__main__":
main()