samagra44
inital commit
ddbfa45
Raw
History Blame Contribute Delete
1.6 kB
from langchain_openai import AzureChatOpenAI
import os, json
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser
from channels.generic.websocket import AsyncWebsocketConsumer
from dotenv import load_dotenv
load_dotenv()
os.environ["AZURE_OPENAI_API_KEY"] = os.getenv("AZURE_OPENAI_API_KEY")
os.environ["OPENAI_API_VERSION"] = os.getenv("OPENAI_API_VERSION")
os.environ["AZURE_OPENAI_ENDPOINT"] = os.getenv("AZURE_OPENAI_ENDPOINT")
llm = AzureChatOpenAI(
azure_deployment="gpt-4o",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2,
)
prompt = ChatPromptTemplate.from_messages(
[("system", "You are a helpful assistant"), ("user", "{input}")]
)
output_parser = StrOutputParser()
chain = (
prompt
| llm.with_config({"run_name": "model"})
| output_parser.with_config({"run_name": "Assistant"})
)
class ChatConsumer(AsyncWebsocketConsumer):
async def connect(self):
await self.accept()
async def disconnect(self, close_code):
pass
async def receive(self, text_data):
text_data_json = json.loads(text_data)
message = text_data_json["message"]
try:
async for chunk in chain.astream_events(
{"input": message}, version="v1", include_names=["Assistant"]
):
if chunk["event"] in ["on_parser_start", "on_parser_stream"]:
await self.send(text_data=json.dumps(chunk))
except Exception as e:
await self.send(text_data=json.dumps({"error": str(e)}))