File size: 2,002 Bytes
6bc4708
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
70
71
72
from pydantic_ai import Agent, RunContext
import openai
from pydantic_ai.models.openai import OpenAIModelSettings, OpenAIModel
from pydantic_ai.providers.openai import OpenAIProvider
from pydantic import BaseModel, Field
from settings import Settings
import asyncio
from dataclasses import dataclass

settings = Settings()

groq_settings = OpenAIModelSettings(
    temperature=0.7,
    top_p=0.95,
    frequency_penalty=0,
)

model_name = "llama-3.3-70b"

client = openai.AsyncOpenAI(api_key=settings.cerebras_api_key, base_url=settings.cerebras_base_url)

model = OpenAIModel(
    model_name=model_name,
    provider=OpenAIProvider(openai_client=client),
)

@dataclass
class Deps:
    pass

class Form(BaseModel):
    customername: str = Field(description="The name of the customer making the request if given, else 'unknown'")
    requesttype: str = Field(description="The type of request being made. example: 'technical support', 'billing', etc.")
    issue: str = Field(description="Detailed description of 50 lines of the issue being reported by the customer")
    emotion: str = Field(description="The emotion of the customer to be given in one word. example: 'angry', 'happy', 'sad', etc.")

with open("form_prompt.txt", "r") as file:
    form_prompt = file.read()

with open("response_prompt.txt", "r") as file:
    response_prompt = file.read()

form_agent = Agent(
    model=model,
    model_settings=groq_settings,
    system_prompt=form_prompt,
    retries=3,
    result_type=Form,
)

response_agent = Agent(
    model=model,
    model_settings=groq_settings,
    system_prompt=response_prompt,
    retries=3,
)

# Code below is only for debugging please ignore

async def chat():
    while True:
        user_message = input("You: ")

        if user_message == "exit":
            break

        result = await form_agent.run(user_prompt=user_message)
        response = result.data if result else "Sorry, I failed to process that."

        print("Bot:", response)

# asyncio.run(chat())