Skip to content

Commit 72d52f4

Browse files
authored
Merge pull request #223 from FullStackWithLawrence/next
add v2 Settings class
2 parents a5a7d31 + 9bebdd7 commit 72d52f4

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+1661
-3311
lines changed

.github/actions/tests/python/action.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,8 @@ runs:
114114

115115
- name: Run Python unit tests
116116
shell: bash
117+
env:
118+
GITHUB_ACTIONS: "true"
119+
DEBUG_MODE: "true"
117120
run: |
118121
make api-test

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ repos:
1717
types: [javascript]
1818
files: ^client/
1919
- repo: https://github.com/pre-commit/mirrors-prettier
20-
rev: v4.0.0-alpha.4
20+
rev: v4.0.0-alpha.8
2121
hooks:
2222
- id: prettier
2323
- repo: https://github.com/psf/black
24-
rev: 23.12.0
24+
rev: 23.12.1
2525
hooks:
2626
- id: black
2727
- repo: https://github.com/PyCQA/flake8

.pylintrc

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
[MASTER]
2-
ignore =
3-
__version__.py
2+
ignore-paths=venv,node_modules
3+
ignore=__version__.py
44

55
[FORMAT]
66
max-line-length=120
7+
8+
[MESSAGES CONTROL]
9+
disable=too-few-public-methods,invalid-name,line-too-long,no-self-argument,unused-import

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -102,7 +102,7 @@ Detailed documentation for each endpoint is available here: [Documentation](./do
102102

103103
## Support
104104

105-
To get community support, go to the official [Issues Page](https://github.com/FullStackWithLawrence/aws-rekognition/issues) for this project.
105+
To get community support, go to the official [Issues Page](https://github.com/FullStackWithLawrence/aws-openai/issues) for this project.
106106

107107
## Good Coding Best Practices
108108

api/terraform/apigateway.tf

Lines changed: 1 addition & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -61,45 +61,7 @@ resource "aws_api_gateway_api_key" "openai" {
6161
resource "aws_api_gateway_deployment" "openai" {
6262
rest_api_id = aws_api_gateway_rest_api.openai.id
6363
triggers = {
64-
redeployment = sha1(jsonencode([
65-
aws_api_gateway_rest_api.openai.body,
66-
67-
# 1 thru 10
68-
module.default_grammar.sha1_deployment_trigger,
69-
module.default_summarize.sha1_deployment_trigger,
70-
module.default_parse_data.sha1_deployment_trigger,
71-
module.default_emoji_translation.sha1_deployment_trigger,
72-
module.default_time_complexity.sha1_deployment_trigger,
73-
module.default_explain_code.sha1_deployment_trigger,
74-
module.default_keywords.sha1_deployment_trigger,
75-
module.default_product_name_gen.sha1_deployment_trigger,
76-
module.default_fix_python_bugs.sha1_deployment_trigger,
77-
module.default_spreadsheet_gen.sha1_deployment_trigger,
78-
79-
# 11 thru 20
80-
module.default_tweet_classifier.sha1_deployment_trigger,
81-
module.default_airport_codes.sha1_deployment_trigger,
82-
module.default_mood_color.sha1_deployment_trigger,
83-
module.default_vr_fitness.sha1_deployment_trigger,
84-
module.default_marv_sarcastic_chat.sha1_deployment_trigger,
85-
module.default_turn_by_turn_directions.sha1_deployment_trigger,
86-
module.default_interview_questions.sha1_deployment_trigger,
87-
module.default_function_from_spec.sha1_deployment_trigger,
88-
module.default_code_improvement.sha1_deployment_trigger,
89-
module.default_single_page_website.sha1_deployment_trigger,
90-
91-
# 21 thru 30
92-
module.default_rap_battle.sha1_deployment_trigger,
93-
module.default_memo_writer.sha1_deployment_trigger,
94-
module.default_emoji_chatbot.sha1_deployment_trigger,
95-
module.default_translation.sha1_deployment_trigger,
96-
module.default_socratic_tutor.sha1_deployment_trigger,
97-
module.default_sql_translate.sha1_deployment_trigger,
98-
module.default_meeting_notes_summarizer.sha1_deployment_trigger,
99-
module.default_review_classifier.sha1_deployment_trigger,
100-
module.default_pro_con_discusser.sha1_deployment_trigger,
101-
module.default_lesson_plan_writer.sha1_deployment_trigger
102-
]))
64+
redeployment = timestamp()
10365
}
10466
lifecycle {
10567
create_before_destroy = true

api/terraform/endpoint/mapping-templates/openai-integration.tpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## see https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-mapping-template-reference.html
22
{
3+
"object_type": "chat.completion",
34
"model": "${mapping_model}",
45
"end_point": "${mapping_end_point}",
56
"temperature": ${mapping_temperature},

api/terraform/endpoint/outputs.tf

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +0,0 @@
1-
2-
output "aws_api_gateway_integration" {
3-
value = aws_api_gateway_integration.post
4-
}
5-
6-
output "aws_api_gateway_method" {
7-
value = aws_api_gateway_method.post
8-
}
9-
10-
output "aws_api_gateway_method_response_endpoint_response_200" {
11-
value = aws_api_gateway_method_response.post_200
12-
}
13-
14-
output "sha1_deployment_trigger" {
15-
value = sha1(jsonencode([
16-
aws_api_gateway_integration.post,
17-
aws_api_gateway_method.post,
18-
aws_api_gateway_method_response.post_200.id,
19-
]))
20-
}

api/terraform/json/iam_policy_lambda.json

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,21 @@
1313
"logs:FilterLogEvents"
1414
],
1515
"Resource": ["arn:aws:lambda:*"]
16+
},
17+
{
18+
"Effect": "Allow",
19+
"Action": [
20+
"apigateway:GET",
21+
"iam:ListPolicies",
22+
"iam:GetPolicy",
23+
"iam:GetPolicyVersion",
24+
"iam:ListAttachedRolePolicies",
25+
"s3:ListAllMyBuckets",
26+
"ec2:DescribeRegions",
27+
"route53:ListHostedZones",
28+
"route53:ListResourceRecordSets"
29+
],
30+
"Resource": "*"
1631
}
1732
]
1833
}

api/terraform/lambda_langchain.tf

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
# that call this Lambda, rather than here.
1414
#------------------------------------------------------------------------------
1515
locals {
16-
langchain_function_name = "lambda_langchain"
17-
langchain_build_path = "${path.module}/build/"
18-
langchain_openai_api_directory = "${path.module}/python/openai_api"
19-
langchain_source_directory = "${local.langchain_openai_api_directory}/${local.langchain_function_name}"
20-
langchain_packaging_script = "${local.langchain_source_directory}/create_pkg.sh"
21-
langchain_dist_package_name = "${local.langchain_function_name}_dist_pkg.zip"
16+
langchain_function_name = "lambda_langchain"
17+
langchain_build_path = "${path.module}/build/distribution_package"
18+
langchain_source_directory = "${path.module}/python/openai_api"
19+
langchain_packaging_script = "${local.langchain_source_directory}/create_pkg.sh"
20+
langchain_dist_package_name = "${local.langchain_function_name}_dist_pkg.zip"
2221
}
2322

2423
###############################################################################
@@ -27,18 +26,15 @@ locals {
2726
###############################################################################
2827
resource "null_resource" "package_lambda_langchain" {
2928
triggers = {
30-
redeployment = sha1(jsonencode([
31-
file("${local.langchain_source_directory}/lambda_handler.py"),
32-
file("${local.langchain_packaging_script}")
33-
]))
29+
always_redeploy = timestamp()
3430
}
3531

3632
provisioner "local-exec" {
3733
interpreter = ["/bin/bash"]
3834
command = local.langchain_packaging_script
3935

4036
environment = {
41-
PARENT_DIRECTORY = local.langchain_openai_api_directory
37+
TERRAFORM_ROOT = path.module
4238
SOURCE_CODE_PATH = local.langchain_source_directory
4339
BUILD_PATH = local.langchain_build_path
4440
PACKAGE_FOLDER = local.langchain_function_name
@@ -49,7 +45,7 @@ resource "null_resource" "package_lambda_langchain" {
4945
data "archive_file" "lambda_langchain" {
5046
# see https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
5147
source_dir = local.langchain_build_path
52-
output_path = "${local.langchain_build_path}/${local.langchain_dist_package_name}"
48+
output_path = "${path.module}/build/${local.langchain_dist_package_name}"
5349
type = "zip"
5450
depends_on = [null_resource.package_lambda_langchain]
5551
}
@@ -59,7 +55,7 @@ data "archive_file" "lambda_langchain" {
5955
###############################################################################
6056
data "external" "env_lambda_langchain" {
6157
# kluge to read and map the openai api key and org data contained in .env
62-
program = ["${local.langchain_source_directory}/env.sh"]
58+
program = ["${local.langchain_source_directory}/${local.langchain_function_name}/env.sh"]
6359

6460
# For Windows (or Powershell core on MacOS and Linux),
6561
# run a Powershell script instead
@@ -79,7 +75,7 @@ resource "aws_lambda_function" "lambda_langchain" {
7975
runtime = var.lambda_python_runtime
8076
memory_size = var.lambda_memory_size
8177
timeout = var.lambda_timeout
82-
handler = "lambda_handler.handler"
78+
handler = "openai_api.lambda_langchain.lambda_handler.handler"
8379
architectures = var.compatible_architectures
8480
filename = data.archive_file.lambda_langchain.output_path
8581
source_code_hash = data.archive_file.lambda_langchain.output_base64sha256
@@ -93,6 +89,7 @@ resource "aws_lambda_function" "lambda_langchain" {
9389
OPENAI_API_KEY = data.external.env_lambda_langchain.result["OPENAI_API_KEY"]
9490
OPENAI_ENDPOINT_IMAGE_N = var.openai_endpoint_image_n
9591
OPENAI_ENDPOINT_IMAGE_SIZE = var.openai_endpoint_image_size
92+
AWS_DEPLOYED = true
9693
}
9794
}
9895
}

api/terraform/lambda_layer.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,12 @@
1010
locals {
1111
layer_slug = "genai"
1212
layer_name = "layer_${local.layer_slug}"
13-
layer_parent_directory = "${path.module}/python/"
14-
layer_source_directory = "${local.layer_parent_directory}${local.layer_name}"
13+
layer_parent_directory = "${path.module}/python"
14+
layer_source_directory = "${local.layer_parent_directory}/${local.layer_name}"
1515
layer_packaging_script = "${local.layer_source_directory}/create_container.sh"
1616
layer_package_folder = local.layer_slug
1717
layer_dist_build_path = "${path.module}/build/"
18-
layer_dist_package_name = "${local.layer_dist_build_path}${local.layer_name}_dst.zip"
18+
layer_dist_package_name = "${local.layer_name}_dst.zip"
1919
}
2020

2121
###############################################################################
@@ -39,7 +39,6 @@ resource "null_resource" "package_layer_genai" {
3939
command = local.layer_packaging_script
4040

4141
environment = {
42-
PARENT_DIRECTORY = local.layer_parent_directory
4342
SOURCE_CODE_PATH = local.layer_source_directory
4443
RUNTIME = var.lambda_python_runtime
4544
CONTAINER_NAME = local.layer_name

api/terraform/lambda_openai_v2.tf

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,11 @@
1313
# that call this Lambda, rather than here.
1414
#------------------------------------------------------------------------------
1515
locals {
16-
openai_v2_function_name = "lambda_openai_v2"
17-
openai_v2_build_path = "${path.module}/build/"
18-
openai_v2_openai_api_directory = "${path.module}/python/openai_api"
19-
openai_v2_source_directory = "${local.openai_v2_openai_api_directory}/${local.openai_v2_function_name}"
20-
openai_v2_packaging_script = "${local.openai_v2_source_directory}/create_pkg.sh"
21-
openai_v2_dist_package_name = "${local.openai_v2_function_name}_dist_pkg.zip"
16+
openai_v2_function_name = "lambda_openai_v2"
17+
openai_v2_build_path = "${path.module}/build/distribution_package"
18+
openai_v2_source_directory = "${path.module}/python/openai_api"
19+
openai_v2_packaging_script = "${local.openai_v2_source_directory}/create_pkg.sh"
20+
openai_v2_dist_package_name = "${local.openai_v2_function_name}_dist_pkg.zip"
2221
}
2322

2423
###############################################################################
@@ -27,18 +26,15 @@ locals {
2726
###############################################################################
2827
resource "null_resource" "package_lambda_openai_v2" {
2928
triggers = {
30-
redeployment = sha1(jsonencode([
31-
file("${local.openai_v2_source_directory}/lambda_handler.py"),
32-
file("${local.openai_v2_packaging_script}")
33-
]))
29+
always_redeploy = timestamp()
3430
}
3531

3632
provisioner "local-exec" {
3733
interpreter = ["/bin/bash"]
3834
command = local.openai_v2_packaging_script
3935

4036
environment = {
41-
PARENT_DIRECTORY = local.openai_v2_openai_api_directory
37+
TERRAFORM_ROOT = path.module
4238
SOURCE_CODE_PATH = local.openai_v2_source_directory
4339
BUILD_PATH = local.openai_v2_build_path
4440
PACKAGE_FOLDER = local.openai_v2_function_name
@@ -48,8 +44,8 @@ resource "null_resource" "package_lambda_openai_v2" {
4844

4945
data "archive_file" "lambda_openai_v2" {
5046
# see https://registry.terraform.io/providers/hashicorp/archive/latest/docs/data-sources/file
51-
source_dir = "${local.openai_v2_source_directory}/${local.openai_v2_function_name}/"
52-
output_path = "${local.openai_v2_build_path}/${local.openai_v2_dist_package_name}"
47+
source_dir = local.openai_v2_build_path
48+
output_path = "${path.module}/build/${local.openai_v2_dist_package_name}"
5349
type = "zip"
5450
depends_on = [null_resource.package_lambda_openai_v2]
5551
}
@@ -59,7 +55,7 @@ data "archive_file" "lambda_openai_v2" {
5955
###############################################################################
6056
data "external" "env_lambda_openai_v2" {
6157
# kluge to read and map the openai api key and org data contained in .env
62-
program = ["${local.openai_v2_source_directory}/env.sh"]
58+
program = ["${local.openai_v2_source_directory}/${local.openai_v2_function_name}/env.sh"]
6359

6460
# For Windows (or Powershell core on MacOS and Linux),
6561
# run a Powershell script instead
@@ -79,7 +75,7 @@ resource "aws_lambda_function" "lambda_openai_v2" {
7975
runtime = var.lambda_python_runtime
8076
memory_size = var.lambda_memory_size
8177
timeout = var.lambda_timeout
82-
handler = "lambda_handler.handler"
78+
handler = "openai_api.lambda_openai_v2.lambda_handler.handler"
8379
architectures = var.compatible_architectures
8480
filename = data.archive_file.lambda_openai_v2.output_path
8581
source_code_hash = data.archive_file.lambda_openai_v2.output_base64sha256
@@ -93,6 +89,7 @@ resource "aws_lambda_function" "lambda_openai_v2" {
9389
OPENAI_API_KEY = data.external.env_lambda_openai_v2.result["OPENAI_API_KEY"]
9490
OPENAI_ENDPOINT_IMAGE_N = var.openai_endpoint_image_n
9591
OPENAI_ENDPOINT_IMAGE_SIZE = var.openai_endpoint_image_size
92+
AWS_DEPLOYED = true
9693
}
9794
}
9895
}

api/terraform/python/layer_genai/requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,3 +15,4 @@ pinecone-client==2.2.4
1515
pydantic==2.5.3
1616
pydantic-settings==2.1.0
1717
python-dotenv==1.0.0
18+
python-hcl2==4.3.2
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
# -*- coding: utf-8 -*-
22
# DO NOT EDIT.
33
# Managed via automated CI/CD in .github/workflows/semanticVersionBump.yml.
4-
__version__ = "0.7.2"
4+
__version__ = "0.8.0"

0 commit comments

Comments
 (0)