OpenRouter / openrouter.py
DevsDoCode's picture
Upload 5 files
9d73e86 verified
raw
history blame contribute delete
No virus
3.86 kB
import requests
import json
import os
from dotenv import load_dotenv; load_dotenv() # Load environment variables from .env file
def generate(query: str, system_prompt: str = "Talk Like Shakesphere" , model: str = "openai/gpt-4o", max_tokens: int = 4096, # For Simple Models
temperature: float = 0.85, frequency_penalty: float = 0.34, presence_penalty: float = 0.06,
repetition_penalty: float = 1.0, top_k: int = 0) -> str:
"""
Sends a request to the OpenRouter API and returns the generated text using the specified model.
Args:
query (str): The input query or prompt.
system_prompt (str, optional): A context or introduction to set the style or tone of the generated response.
Defaults to "Talk Like Shakespeare".
model (str, optional): The language model to use for generating the response.
Defaults to "openchat/openchat-7b".
max_tokens (int, optional): The maximum number of tokens to generate in the response.
Defaults to 8096.
temperature (float, optional): A parameter controlling the diversity of the generated response.
Higher values result in more diverse outputs. Defaults to 0.85.
frequency_penalty (float, optional): A penalty applied to tokens with low frequency in the training data.
Defaults to 0.34.
presence_penalty (float, optional): A penalty applied to tokens based on their presence in the prompt.
Defaults to 0.06.
repetition_penalty (float, optional): A penalty applied to repeated tokens in the generated response.
Defaults to 1.0.
top_k (int, optional): The number of highest probability tokens to consider at each step of generation.
Defaults to 0, meaning no restriction.
Returns:
str: The generated text.
Available models:
- Free:
- "openchat/openchat-7b"
- "huggingfaceh4/zephyr-7b-beta"
- "mistralai/mistral-7b-instruct:free"
- Flagship Opensource:
- "meta-llama/llama-3-8b-instruct:extended"
- "lynn/soliloquy-l3"
- "mistralai/mixtral-8x22b-instruct"
- "meta-llama/llama-3-70b-instruct:nitro"
- Premium:
- "openai/gpt-4"
- "openai/gpt-4-0314"
- "anthropic/claude-3-opus"
- "anthropic/claude-3-opus:beta"
- "openai/gpt-4-turbo"
"""
response = requests.post(
url="https://openrouter.ai/api/v1/chat/completions",
headers={
"Authorization": f"Bearer {os.environ.get('OPENROUTER')}",
},
data=json.dumps({
"messages": [
{"role": "system", "content": system_prompt},
{"role": "user", "content": query},
],
"model": model,
"max_tokens": max_tokens,
"temperature": temperature,
"frequency_penalty": frequency_penalty,
"presence_penalty": presence_penalty,
"repetition_penalty": repetition_penalty,
"top_k": top_k,
}))
try: return response.json()["choices"][0]["message"]["content"].strip()
except Exception as e: return f"Failed to Get Response\nError: {e}\nResponse: {response.text}"
if __name__ == "__main__":
# response = openrouter_api_call("Introdue yourself and tell me your name and who made you")
response = generate("are you gpt 4 or not. do you have access to realtime data. if not then till which time you have data of")
print(response)