File tree Expand file tree Collapse file tree 7 files changed +130
-0
lines changed
Expand file tree Collapse file tree 7 files changed +130
-0
lines changed Original file line number Diff line number Diff line change 1+ # How to Use the OpenRouter API to Access Multiple AI Models via Python
2+
3+ This folder contains supporting materials for the Real Python tutorial [ How to Use the OpenRouter API to Access Multiple AI Models via Python] ( https://realpython.com/openrouter-api/ ) .
Original file line number Diff line number Diff line change 1+ import os
2+ import requests
3+
4+ OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
5+
6+ api_key = os .getenv ("OPENROUTER_API_KEY" )
7+
8+ headers = {
9+ "Authorization" : f"Bearer { api_key } " ,
10+ "Content-Type" : "application/json" ,
11+ }
12+ payload = {
13+ "model" : "openrouter/auto" ,
14+ "messages" : [{"role" : "user" , "content" : "Say hello in one sentence." }],
15+ }
16+ response = requests .post (OPENROUTER_API_URL , headers = headers , json = payload )
17+ data = response .json ()
18+
19+ print (f"Model: { data .get ('model' )} " )
20+ print (f"Response: { data ['choices' ][0 ]['message' ]['content' ]} " )
Original file line number Diff line number Diff line change 1+ import os
2+ import requests
3+
4+ OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
5+
6+ api_key = os .getenv ("OPENROUTER_API_KEY" )
7+
8+ headers = {
9+ "Authorization" : f"Bearer { api_key } " ,
10+ "Content-Type" : "application/json" ,
11+ }
12+ payload = {
13+ "model" : "openai/gpt-3.5-turbo" ,
14+ "messages" : [{"role" : "user" , "content" : "Say hello in one sentence." }],
15+ }
16+ response = requests .post (OPENROUTER_API_URL , headers = headers , json = payload )
17+ data = response .json ()
18+
19+ if model := data .get ("model" ):
20+ print (f"Model: { model } by { data ['provider' ]} " )
21+ print (f"Response: { data ['choices' ][0 ]['message' ]['content' ]} " )
22+ else :
23+ print ("No model found in the response." )
24+ print (f"Response: { data } " )
Original file line number Diff line number Diff line change 1+ import os
2+ import requests
3+
4+ OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
5+
6+ api_key = os .getenv ("OPENROUTER_API_KEY" )
7+
8+
9+ def make_request_with_fallback (models_list , messages ):
10+ headers = {
11+ "Authorization" : f"Bearer { api_key } " ,
12+ "Content-Type" : "application/json" ,
13+ }
14+ payload = {"models" : models_list , "messages" : messages }
15+
16+ return requests .post (OPENROUTER_API_URL , headers = headers , json = payload )
17+
18+
19+ response = make_request_with_fallback (
20+ models_list = [
21+ "openai/gpt-5" ,
22+ "openai/gpt-3.5-turbo" ,
23+ "openai/gpt-3.5-turbo-16k" ,
24+ ],
25+ messages = [{"role" : "user" , "content" : "What is the capital of France?" }],
26+ )
27+
28+ data = response .json ()
29+ if model := data .get ("model" ):
30+ print (f"Model: { model } by { data ['provider' ]} " )
31+ print (f"Response: { data ['choices' ][0 ]['message' ]['content' ]} " )
32+ else :
33+ print ("No model found in the response." )
34+ print (f"Response: { data } " )
Original file line number Diff line number Diff line change 1+ import os
2+ import requests
3+
4+ OPENROUTER_MODELS_URL = "https://openrouter.ai/api/v1/models"
5+
6+ api_key = os .getenv ("OPENROUTER_API_KEY" )
7+
8+ headers = {"Authorization" : f"Bearer { api_key } " }
9+ response = requests .get (OPENROUTER_MODELS_URL , headers = headers )
10+ data = response .json ()
11+
12+ models = data .get ("data" , [])
13+ print (f"Success! Found { len (models )} models via OpenRouter." )
14+ print (f"Examples: { ', ' .join (m ['id' ] for m in models [:5 ])} " )
Original file line number Diff line number Diff line change 1+ requests
Original file line number Diff line number Diff line change 1+ import os
2+ import requests
3+
4+ OPENROUTER_API_URL = "https://openrouter.ai/api/v1/chat/completions"
5+
6+ api_key = os .getenv ("OPENROUTER_API_KEY" )
7+
8+
9+ def make_request (model , messages , provider_config = None ):
10+ headers = {
11+ "Authorization" : f"Bearer { api_key } " ,
12+ "Content-Type" : "application/json" ,
13+ }
14+ payload = {"model" : model , "messages" : messages }
15+ if provider_config :
16+ payload ["provider" ] = provider_config
17+
18+ response = requests .post (OPENROUTER_API_URL , headers = headers , json = payload )
19+ response .raise_for_status ()
20+ return response .json ()
21+
22+
23+ data = make_request (
24+ model = "meta-llama/llama-3.1-70b-instruct" ,
25+ messages = [{"role" : "user" , "content" : "Explain AI in one sentence." }],
26+ provider_config = {"sort" : "price" },
27+ )
28+
29+ if model := data .get ("model" ):
30+ print (f"Model: { model } by { data ['provider' ]} " )
31+ print (f"Response: { data ['choices' ][0 ]['message' ]['content' ]} " )
32+ else :
33+ print ("No model found in the response." )
34+ print (f"Response: { data } " )
You can’t perform that action at this time.
0 commit comments