| | from dataclasses import dataclass |
| |
|
| | from llama_cpp import Llama |
| | from llama_cpp import ChatCompletionRequestMessage as Message |
| | from llama_cpp import ChatCompletionRequestSystemMessage as SystemMessage |
| | from llama_cpp import ChatCompletionRequestAssistantMessage as AssistantMessage |
| | from llama_cpp import ChatCompletionRequestUserMessage as UserMessage |
| |
|
| |
|
| | @dataclass |
| | class MessageRole: |
| | ASSISTANT: str = "assistant" |
| | SYSTEM: str = "system" |
| | USER: str = "user" |
| | EXIT: str = "exit" |
| |
|
| |
|
| | class ConversationHandler: |
| | def __init__(self, model: Llama, message_role: MessageRole) -> None: |
| | self.model: Llama = model |
| | self.message_role = message_role |
| | self.messages: list[Message] = [ |
| | SystemMessage( |
| | role=self.message_role.SYSTEM, |
| | content='You are a helpful developer assistant, answer all the questions correctly and concisely.' |
| | ), |
| | AssistantMessage(role=self.message_role.ASSISTANT, content='Hello, do you have any question?'), |
| | ] |
| |
|
| | def send_message(self, content: str): |
| | new_message = UserMessage(role=self.message_role.USER, content=content) |
| | self.messages.append(new_message) |
| |
|
| | def generate_reply(self) -> str: |
| | response = self.model.create_chat_completion( |
| | messages=self.messages, |
| | temperature=0.7, |
| | top_p=0.9, |
| | top_k=20, |
| | max_tokens=128 |
| | ) |
| |
|
| | response_content = response['choices'][0]['message'] |
| | self.messages.append(AssistantMessage(role=self.message_role.ASSISTANT, content=response_content)) |
| |
|
| | return response_content |
| |
|