40 lines
1.1 KiB
Python
40 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)
|