feat: solution for 'Экзамен: Самокорректирующийся агент'
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Self‑correcting 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 self‑correction 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
|
||||
self‑correcting 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 hard‑coded prompt,
|
||||
correct it, and print both versions.
|
||||
"""
|
||||
prompt = (
|
||||
"Explain the concept of a self‑correcting 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()
|
||||
Reference in New Issue
Block a user