| import gradio as gr |
| from langchain import hub |
| from langchain_google_genai import ChatGoogleGenerativeAI |
| from langchain_core.messages import SystemMessage |
| from langchain.agents import create_react_agent, AgentExecutor |
| from langchain_community.agent_toolkits.load_tools import load_tools |
| from dotenv import find_dotenv, load_dotenv |
| import os |
|
|
| load_dotenv(find_dotenv()) |
| google_api_key = os.environ['GOOGLE_AI_API_KEY'] |
|
|
| prompt = hub.pull("hwchase17/react-chat") |
|
|
| template = """ |
| You are Codora, an AI assistant that helps the user with his/her code. |
| You accept user input and provide assistance in coding. DO NOT PROVIDE ANSWERS, ONLY GUIDE THEM TO THE SOLUTION. |
| Provide any necessary information to the user to help them understand the problem and solve it on their own. |
| Your answers should be crisp, clear and concise. |
| Use the provided tool to search Stack Overflow for relevant information. |
| Answer questions that are only related to coding/programming. |
| Don't respond to requests that are irrelevant to coding/programming. |
| Politely decline any irrelevant questions and remind them that you need a coding/programming request. |
| """ |
|
|
| messages = [SystemMessage(content=template)] |
|
|
| model = ChatGoogleGenerativeAI(model="gemini-1.5-pro", |
| google_api_key=google_api_key, |
| temperature=0.4) |
|
|
| tools = load_tools(["stackexchange"]) |
|
|
| agent = create_react_agent(llm=model, |
| prompt=prompt, |
| tools=tools) |
|
|
| agent_executor = AgentExecutor(agent=agent, |
| verbose=True, |
| tools=tools) |
|
|
| def respond(message, history): |
| messages.append(message) |
| response = agent_executor.invoke({"input": messages, "chat_history" : history}) |
| return response['output'] |
|
|
| demo = gr.ChatInterface( |
| respond, |
| examples=["How do I use async/await in a JavaScript function?", "How do I center a div in CSS?", "How do I create a virtual environment in Python?"] |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |