Skip to content
This repository was archived by the owner on Aug 15, 2025. It is now read-only.

Commit 593d0c9

Browse files
authored
Enhance GenAI Integration and Default Model Handling (#4)
* Update README to clarify GENAI_API_URL usage as private option * Add default GenAI selection handling and Redis state saving for users
1 parent 43836ef commit 593d0c9

File tree

3 files changed

+41
-8
lines changed

3 files changed

+41
-8
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ To use the custom GenAI platform with OpenAI-compatible API, export the followin
8686

8787
```zsh
8888
export GENAI_API_KEY=<your-genai-api-key>
89-
export GENAI_API_URL=<your-genai-api-url> # Optional, set to public: https://docs.digitalocean.com/products/genai-platform/how-to/manage-ai-agent/use-agent/#set-availability. Example: https://agent-<id>.ondigitalocean.app/api/v1
89+
export GENAI_API_URL=<your-genai-api-url> # Optional, can be private: https://docs.digitalocean.com/products/genai-platform/how-to/manage-ai-agent/use-agent/#set-availability. Example: https://agent-<id>.ondigitalocean.app/api/v1
9090
```
9191

9292
### Setup Your Local Project

listeners/events/app_home_opened.py

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
from ai.providers import get_available_providers
33
from slack_sdk import WebClient
44
from state_store.get_redis_user_state import get_redis_user_state
5+
from state_store.set_redis_user_state import set_redis_user_state
56
import sys
7+
import os
68

79
"""
810
Callback for handling the 'app_home_opened' event. It checks if the event is for the 'home' tab,
@@ -39,13 +41,27 @@ def app_home_opened_callback(event: dict, logger: Logger, client: WebClient):
3941
print(f"⚠️ No matching option found for model '{model}', using default")
4042
else:
4143
print(f"ℹ️ No provider selection found for user: {user_id}")
42-
# add an empty option if the user has no previously selected model.
43-
options.append(
44-
{
45-
"text": {"type": "plain_text", "text": "Select a provider", "emoji": True},
46-
"value": "null",
47-
}
48-
)
44+
# Check if GENAI_API_URL is set and genai-agent is available
45+
genai_api_url = os.environ.get("GENAI_API_URL")
46+
if genai_api_url and any(opt["value"].startswith("genai-agent") for opt in options):
47+
print(f"🔄 Using genai-agent as default model for user: {user_id}")
48+
initial_option = list(filter(lambda x: x["value"].startswith("genai-agent"), options))
49+
if initial_option:
50+
# Save the default selection to Redis
51+
try:
52+
set_redis_user_state(user_id, "genai", "genai-agent")
53+
print(f"✅ Saved default GenAI selection to Redis for user: {user_id}")
54+
except Exception as e:
55+
print(f"❌ Error saving default GenAI selection: {e}", file=sys.stderr)
56+
logger.error(f"Error saving default GenAI selection: {e}")
57+
else:
58+
# add an empty option if the user has no previously selected model.
59+
options.append(
60+
{
61+
"text": {"type": "plain_text", "text": "Select a provider", "emoji": True},
62+
"value": "null",
63+
}
64+
)
4965

5066
try:
5167
client.views_publish(

state_store/get_redis_user_state.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
import logging
22
import sys
3+
import os
34
from .redis_state_store import RedisStateStore
45
from .user_identity import UserIdentity
6+
from .set_redis_user_state import set_redis_user_state
57

68
# Set higher logging level for debugging Redis issues
79
logging.basicConfig(level=logging.INFO)
@@ -27,6 +29,21 @@ def get_redis_user_state(user_id: str, is_app_home: bool, redis_url: str = None)
2729
user_data = redis_store.get_state(user_id)
2830

2931
if not user_data:
32+
# Check if GENAI_API_URL is set and use genai-agent as default
33+
genai_api_url = os.environ.get("GENAI_API_URL")
34+
if genai_api_url:
35+
# Set default to genai-agent and save to Redis
36+
try:
37+
print(f"🔄 GENAI_API_URL is set, using genai-agent as default for user: {user_id}")
38+
set_redis_user_state(user_id, "genai", "genai-agent", redis_url)
39+
print(f"✅ Saved default GenAI selection to Redis for user: {user_id}")
40+
return "genai", "genai-agent"
41+
except Exception as e:
42+
error_msg = f"❌ Error saving default GenAI selection: {e}"
43+
print(error_msg, file=sys.stderr)
44+
logger.error(error_msg)
45+
46+
# If GENAI_API_URL not set or error saving default
3047
if not is_app_home:
3148
print(f"❌ No provider selection found for user: {user_id} (non-app-home context)")
3249
raise FileNotFoundError("No provider selection found. Please navigate to the App Home and make a selection.")

0 commit comments

Comments
 (0)