Spaces:
Sleeping
Sleeping
| """This module contains functions to interact with the OpenRouter API. | |
| It load dotenv, OpenAI and other necessary packages to interact | |
| with the OpenRouter API. | |
| Also stores the chat history in a list.""" | |
| from dotenv import load_dotenv | |
| from openai import OpenAI | |
| from IPython.display import Markdown, display | |
| import os | |
| # override any existing environment variables | |
| load_dotenv(override=True) | |
| # load | |
| openrouter_api_key = os.getenv('OPENROUTER_API_KEY') | |
| if openrouter_api_key: | |
| print(f"OpenAI API Key exists and begins {openrouter_api_key[:8]}") | |
| else: | |
| print("OpenAI API Key not set - please head to the troubleshooting guide in the setup folder") | |
| chatHistory = [] | |
| def chatWithOpenRouter(model:str, prompt:str)-> str: | |
| """ This function takes a model and a prompt and shows the response | |
| in markdown format. It uses the OpenAI class from the openai package""" | |
| # here instantiate the OpenAI class but with the OpenRouter | |
| # API URL | |
| llmRequest = OpenAI( | |
| api_key=openrouter_api_key, | |
| base_url="https://openrouter.ai/api/v1" | |
| ) | |
| # add the prompt to the chat history | |
| chatHistory.append({"role": "user", "content": prompt}) | |
| # make the request to the OpenRouter API | |
| response = llmRequest.chat.completions.create( | |
| model=model, | |
| messages=chatHistory | |
| ) | |
| # get the output from the response | |
| assistantResponse = response.choices[0].message.content | |
| # show the answer | |
| display(Markdown(f"**Assistant:** {assistantResponse}")) | |
| # add the assistant response to the chat history | |
| chatHistory.append({"role": "assistant", "content": assistantResponse}) | |
| def getOpenrouterResponse(model:str, prompt:str)-> str: | |
| """ | |
| This function takes a model and a prompt and returns the response | |
| from the OpenRouter API, using the OpenAI class from the openai package. | |
| """ | |
| llmRequest = OpenAI( | |
| api_key=openrouter_api_key, | |
| base_url="https://openrouter.ai/api/v1" | |
| ) | |
| # add the prompt to the chat history | |
| chatHistory.append({"role": "user", "content": prompt}) | |
| # make the request to the OpenRouter API | |
| response = llmRequest.chat.completions.create( | |
| model=model, | |
| messages=chatHistory | |
| ) | |
| # get the output from the response | |
| assistantResponse = response.choices[0].message.content | |
| # add the assistant response to the chat history | |
| chatHistory.append({"role": "assistant", "content": assistantResponse}) | |
| # return the assistant response | |
| return assistantResponse | |
| #clear chat history | |
| def clearChatHistory(): | |
| """ This function clears the chat history. It can't be undone!""" | |
| chatHistory.clear() |