File size: 2,050 Bytes
1286e81
9fa4a00
b374298
 
eebeb78
12d3e1a
1286e81
 
 
9d333bd
1286e81
6876423
12d3e1a
 
20e3edd
1286e81
7fa7a9c
1286e81
 
 
 
 
 
 
12d3e1a
b374298
 
 
 
 
 
 
 
 
 
12d3e1a
 
 
 
 
 
 
 
 
b374298
 
 
 
 
 
 
 
 
 
 
 
 
9d333bd
6876423
 
 
 
 
 
9fa4a00
9d333bd
 
9fa4a00
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import os
from typing import Literal, cast

from pydantic import SecretStr
from _utils.langchain_utils.LLM_class import LLM
from setup.environment import default_model
from langchain_core.messages import HumanMessage
from langchain_openai import ChatOpenAI

llm = LLM()


async def aclaude_answer(claude_client, claude_context_model, prompt):
    print("\n\nComeçou uma requisição pelo Claude")
    response = await claude_client.messages.create(
        model=claude_context_model,
        max_tokens=100,  # Máximo é 4096
        messages=[{"role": "user", "content": prompt}],
    )
    return response.content[
        0
    ].text  # O response.content é uma lista pois é passada uma lista de mensagens, e também retornado uma lista de mensagens, sendo a primeira a mais recente, que é a resposta do model


async def agpt_answer(prompt):
    api_key = os.environ.get("OPENAI_API_KEY")
    if api_key:
        gpt = ChatOpenAI(
            temperature=0,
            model="gpt-4o-mini",
            api_key=SecretStr(api_key),
            max_retries=5,
        )
        response = await gpt.ainvoke([HumanMessage(content=prompt)])
        return response.content


def gpt_answer(
    prompt,
    temperature=0,
    model=default_model,
    max_retries=5,
    shouldReturnFullResponse=False,
):
    api_key = os.environ.get("OPENAI_API_KEY")
    if api_key:
        gpt = ChatOpenAI(
            temperature=temperature,
            model=model,
            api_key=SecretStr(api_key),
            max_retries=max_retries,
        )
        response = gpt.invoke([HumanMessage(content=prompt)])
        if shouldReturnFullResponse:
            return response
        else:
            return response.content


async def agemini_answer(
    prompt,
    model: Literal[
        "gemini-2.5-pro-exp-03-25", "gemini-2.0-flash", "gemini-2.0-flash-lite"
    ] = "gemini-2.0-flash",
) -> str:
    gemini = llm.google_gemini(model)
    resposta = await gemini.ainvoke([HumanMessage(content=prompt)])
    return cast(str, resposta.content)