From c731541d7fab447ec9314a1a990d19f771a6fab8 Mon Sep 17 00:00:00 2001 From: Joseph Ferano Date: Mon, 18 Nov 2024 12:18:40 +0700 Subject: [PATCH] Create index.html with js to interact with flask backend, add claude route in the server --- favicon.ico | Bin 0 -> 34494 bytes index.html | 31 +++++++++++++++++++++++++++++++ main.py | 31 +++++++++++++++++++++++++------ 3 files changed, 56 insertions(+), 6 deletions(-) create mode 100644 favicon.ico create mode 100644 index.html diff --git a/favicon.ico b/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3167591f03ffe3aeb16c0759a2f36358d34967a9 GIT binary patch literal 34494 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 literal 0 HcmV?d00001 diff --git a/index.html b/index.html new file mode 100644 index 0000000..88b0e69 --- /dev/null +++ b/index.html @@ -0,0 +1,31 @@ + + + + Text Input Example + + + + +
+ + + + + diff --git a/main.py b/main.py index 0ce8be1..bb61670 100644 --- a/main.py +++ b/main.py @@ -3,16 +3,35 @@ import os import time from anthropic import Anthropic from flask import Flask, request, redirect, session, url_for +from flask_cors import CORS from dotenv import load_dotenv, find_dotenv load_dotenv(find_dotenv()) -app = Flask(__name__) +client = Anthropic( + api_key=os.environ.get("ANTHROPIC_API_KEY"), +) -@app.route('/') -def hello(): - return 'Hello, World!' +app = Flask(__name__) +CORS(app) + +@app.route('/ask-claude', methods=['POST']) +def ask_claude(): + user_text = request.get_data(as_text=True) + message = client.messages.create( + max_tokens=1024, + messages=[ + { + "role": "user", + "content": user_text, + } + ], + model="claude-3-5-haiku-latest", + ) + response_text = "" + for t in message.content: + response_text += t.text + return response_text if __name__ == '__main__': - print(os.environ.get("ANTHROPIC_API_KEY")) - # app.run() + app.run()