language-learning-app/api/app/services/llm.py

39 lines
1.1 KiB
Python

import asyncio
import anthropic
from ..config import settings
def _create_client() -> anthropic.Anthropic:
return anthropic.Anthropic(api_key=settings.anthropic_api_key)
async def generate_text(prompt: str) -> str:
def _call() -> str:
client = _create_client()
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[{"role": "user", "content": prompt}],
)
return message.content[0].text
return await asyncio.to_thread(_call)
async def translate_text(original_prompt: str, generated_text: str, translate_prompt: str) -> str:
def _call() -> str:
client = _create_client()
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=1024,
messages=[
{"role": "user", "content": original_prompt},
{"role": "assistant", "content": generated_text},
{"role": "user", "content": translate_prompt},
],
)
return message.content[0].text
return await asyncio.to_thread(_call)