Skip to content

Commit 3de930b

Browse files
committed
feat: Add AWS provider support and related API endpoints
1 parent 9fe9bfd commit 3de930b

File tree

9 files changed

+84
-4
lines changed

9 files changed

+84
-4
lines changed

gpt_computer_assistant/agent/agent.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,11 @@ def get_agent_executor(the_anthropic_model=False):
8383
if (
8484
llm_settings[model]["provider"] == "openai"
8585
or llm_settings[model]["provider"] == "groq"
86-
or llm_settings[model]["provider"] == "azureai",
87-
llm_settings[model]["provider"] == "anthropic",
86+
or llm_settings[model]["provider"] == "azureai"
87+
or llm_settings[model]["provider"] == "anthropic"
88+
or llm_settings[model]["provider"] == "aws"
89+
90+
8891
):
8992
return chat_agent_executor.create_tool_calling_executor(get_model(), tools)
9093

gpt_computer_assistant/agent/assistant.py

+2
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ def image_explaination():
7878
or llm_settings[the_model]["provider"] == "ollama"
7979
or llm_settings[the_model]["provider"] == "azureai"
8080
or llm_settings[the_model]["provider"] == "anthropic"
81+
or llm_settings[the_model]["provider"] == "aws"
8182
):
8283
msg = get_agent_executor().invoke(
8384
{"messages": llm_history + [the_message]}, config=config
@@ -193,6 +194,7 @@ def assistant(
193194
llm_settings[the_model]["provider"] == "openai"
194195
or llm_settings[the_model]["provider"] == "azureai"
195196
or llm_settings[the_model]["provider"] == "anthropic"
197+
or llm_settings[the_model]["provider"] == "aws"
196198
):
197199
if just_screenshot:
198200
msg = {"messages": llm_history + [the_message]}

gpt_computer_assistant/api.py

+20
Original file line numberDiff line numberDiff line change
@@ -420,6 +420,26 @@ def save_openai_api_key():
420420
return jsonify({"response": "OpenAI API key saved."})
421421

422422

423+
@app.route("/save_aws_access_key_id", methods=["POST"])
424+
def save_aws_access_key_id():
425+
426+
data = request.json
427+
aws_access_key_id = data["aws_access_key_id"]
428+
from .utils.db import save_aws_access_key_id
429+
430+
save_aws_access_key_id(aws_access_key_id)
431+
return jsonify({"response": "aws_access_key_id key saved."})
432+
433+
434+
@app.route("/save_aws_secret_access_key", methods=["POST"])
435+
def save_aws_secret_access_key():
436+
437+
data = request.json
438+
aws_secret_access_key = data["aws_secret_access_key"]
439+
from .utils.db import save_aws_secret_access_key
440+
441+
save_aws_secret_access_key(aws_secret_access_key)
442+
return jsonify({"response": "aws_secret_access_key key saved."})
423443

424444

425445
@app.route("/save_system_prompt", methods=["POST"])

gpt_computer_assistant/llm.py

+12
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
from langchain_google_genai import ChatGoogleGenerativeAI
55
from langchain_groq import ChatGroq
66
from langchain_anthropic import ChatAnthropic
7+
from langchain_aws import ChatBedrock
8+
79

810
try:
911
from .utils.db import *
@@ -57,6 +59,14 @@ def open_ai_base(high_context):
5759
"streaming": False,
5860
"callbacks": [the_callback],
5961
},
62+
ChatBedrock: {
63+
"model_id": the_model,
64+
"aws_access_key_id": the_anthropic_api_key,
65+
"aws_secret_access_key": the_groq_api_key,
66+
"max_retries": 15,
67+
"streaming": False,
68+
"callbacks": [the_callback],
69+
},
6070
AzureChatOpenAI: {
6171
"azure_deployment": the_model.replace("-azureopenai", ""),
6272
"api_version": the_api_version,
@@ -84,6 +94,8 @@ def open_ai_base(high_context):
8494
the_tuple = (ChatOpenAI, args_mapping[ChatOpenAI])
8595
elif model_args["provider"] == "anthropic":
8696
the_tuple = (ChatAnthropic, args_mapping[ChatAnthropic])
97+
elif model_args["provider"] == "aws":
98+
the_tuple = (ChatBedrock, args_mapping[ChatBedrock])
8799
elif model_args["provider"] == "azureai":
88100
import os
89101
os.environ["AZURE_OPENAI_API_KEY"] = the_api_key

gpt_computer_assistant/llm_settings.py

+7
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,13 @@
1919
"tools": True,
2020
"stream": False,
2121
},
22+
"us.anthropic.claude-3-5-sonnet-20241022-v2:0-aws": {
23+
"show_name": "claude-3-5-sonnet-20241022 (AWS)",
24+
"vision": True,
25+
"provider": "aws",
26+
"tools": True,
27+
"stream": False,
28+
},
2229
"gpt-4o-azureopenai": {
2330
"show_name": "gpt-4o (AzureAI)",
2431
"vision": True,

gpt_computer_assistant/remote.py

+10
Original file line numberDiff line numberDiff line change
@@ -205,6 +205,16 @@ def save_openai_api_key(self, openai_api_key):
205205
response = self.send_request("/save_openai_api_key", data)
206206
return response["response"]
207207

208+
def save_aws_access_key_id(self, aws_access_key_id):
209+
data = {"aws_access_key_id": aws_access_key_id}
210+
response = self.send_request("/save_aws_access_key_id", data)
211+
return response["response"]
212+
def save_aws_secret_access_key(self, aws_secret_access_key):
213+
data = {"aws_secret_access_key": aws_secret_access_key}
214+
response = self.send_request("/save_aws_secret_access_key", data)
215+
return response["response"]
216+
217+
208218
def save_system_prompt(self, prompt):
209219
data = {"prompt": prompt}
210220
response = self.send_request("/save_system_prompt", data)

gpt_computer_assistant/utils/db.py

+22
Original file line numberDiff line numberDiff line change
@@ -551,3 +551,25 @@ def load_location_setting():
551551
return "right"
552552
with open(location_setting, "r") as f:
553553
return f.read()
554+
555+
556+
557+
# OPENAI URL SAVING AND LOADING
558+
def save_aws_access_key_id(id):
559+
kot_db_.set("aws_access_key_id", id)
560+
def load_aws_access_key_id():
561+
if kot_db_.get("aws_access_key_id"):
562+
return kot_db_.get("aws_access_key_id")
563+
else:
564+
return "default"
565+
566+
567+
# OPENAI URL SAVING AND LOADING
568+
def save_aws_secret_access_key(key):
569+
kot_db_.set("aws_secret_access_key", key)
570+
def load_aws_secret_access_key():
571+
if kot_db_.get("aws_secret_access_key"):
572+
return kot_db_.get("aws_secret_access_key")
573+
else:
574+
return "default"
575+

requirements.in

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,4 +53,6 @@ StrEnum==0.4.15
5353
langchain-mcp==0.1.0a1
5454

5555

56-
waitress==3.0.2
56+
waitress==3.0.2
57+
58+
langchain-aws==0.2.9

requirements.txt

+3-1
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,6 @@ StrEnum==0.4.15
4949

5050
langchain-mcp==0.1.0a1
5151

52-
waitress==3.0.2
52+
waitress==3.0.2
53+
54+
langchain-aws==0.2.9

0 commit comments

Comments
 (0)