Samagra07 commited on
Commit
b9a8526
·
verified ·
1 Parent(s): fdda9af

Upload 4 files

Browse files
Files changed (4) hide show
  1. .gitignore +1 -0
  2. Dockerfile +12 -0
  3. app.py +50 -0
  4. requirements.txt +9 -0
.gitignore ADDED
@@ -0,0 +1 @@
 
 
1
+ .env
Dockerfile ADDED
@@ -0,0 +1,12 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ FROM python:3.10
2
+
3
+ WORKDIR /code
4
+
5
+ COPY requirements.txt .
6
+ RUN pip install --no-cache-dir -r requirements.txt
7
+
8
+ COPY . .
9
+
10
+ EXPOSE 7860
11
+
12
+ CMD ["uvicorn", "app:app", "--host", "0.0.0.0", "--port", "7860"]
app.py ADDED
@@ -0,0 +1,50 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from fastapi import FastAPI
2
+ from pydantic import BaseModel
3
+ from typing import List
4
+ from langchain_community.tools.tavily_search import TavilySearchResults
5
+ import os
6
+ from langgraph.prebuilt import create_react_agent
7
+ from langchain_openai import AzureChatOpenAI
8
+ from dotenv import load_dotenv
9
+ load_dotenv()
10
+ os.environ['AZURE_OPENAI_API_KEY'] = os.getenv('AZURE_OPENAI_API_KEY')
11
+ os.environ['OPENAI_API_VERSION'] = os.getenv('OPENAI_API_VERSION')
12
+ os.environ['AZURE_OPENAI_ENDPOINT'] = os.getenv('AZURE_OPENAI_ENDPOINT')
13
+ os.environ['TAVILY_API_KEY'] = os.getenv('TAVILY_API_KEY')
14
+
15
+ MODEL_NAME = [
16
+ "gpt-4o"
17
+ ]
18
+
19
+ tool = TavilySearchResults(max_results=5)
20
+
21
+ tools = [tool, ]
22
+
23
+ app = FastAPI()
24
+
25
+ class RequestState(BaseModel):
26
+ model_name: str
27
+ system_prompt: str
28
+ messages: List[str]
29
+
30
+ @app.post("/chat")
31
+ def chat_endpoint(request: RequestState):
32
+ """API Endpoint to chat with bot"""
33
+ if request.model_name not in MODEL_NAME:
34
+ return {"error": "Model not found"}
35
+
36
+ llm = AzureChatOpenAI(
37
+ azure_deployment="gpt-4o",
38
+ temperature=0,
39
+ max_tokens=None,
40
+ timeout=None,
41
+ max_retries=2,
42
+ )
43
+ agent = create_react_agent(llm, tools=tools, prompt=request.system_prompt)
44
+ state = {"messages": request.messages}
45
+ result = agent.invoke(state)
46
+ return result
47
+
48
+ if __name__ == "__main__":
49
+ import uvicorn
50
+ uvicorn.run(app, host="0.0.0.0", port=8000)
requirements.txt ADDED
@@ -0,0 +1,9 @@
 
 
 
 
 
 
 
 
 
 
1
+ python-dotenv
2
+ langchain
3
+ langchain-core
4
+ langchain-community
5
+ langchain-openai
6
+ fastapi
7
+ uvicorn
8
+ langgraph
9
+ tavily-python