-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathopenai_example.py
More file actions
executable file
·89 lines (72 loc) · 2.96 KB
/
Copy pathopenai_example.py
File metadata and controls
executable file
·89 lines (72 loc) · 2.96 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
import os
import ldclient
from ldclient import Context
from ldclient.config import Config
from ldai.client import LDAIClient, AIConfig, ModelConfig, ProviderConfig, LDMessage
from openai import OpenAI
openai_client = OpenAI()
# Set sdk_key to your LaunchDarkly SDK key.
sdk_key = os.getenv('LAUNCHDARKLY_SDK_KEY')
# Set config_key to the AI Config key you want to evaluate.
ai_config_key = os.getenv('LAUNCHDARKLY_AI_CONFIG_KEY', 'sample-ai-config')
def main():
if not sdk_key:
print("*** Please set the LAUNCHDARKLY_SDK_KEY env first")
exit()
if not ai_config_key:
print("*** Please set the LAUNCHDARKLY_AI_CONFIG_KEY env first")
exit()
ldclient.set_config(Config(sdk_key))
aiclient = LDAIClient(ldclient.get())
if not ldclient.get().is_initialized():
print("*** SDK failed to initialize. Please check your internet connection and SDK credential for any typo.")
exit()
print("*** SDK successfully initialized")
# Set up the evaluation context. This context should appear on your
# LaunchDarkly contexts dashboard soon after you run the demo.
context = (
Context
.builder('example-user-key')
.kind('user')
.name('Sandy')
.build()
)
# Pass a default for improved resiliency when the AI config is unavailable
# or LaunchDarkly is unreachable; omit for a disabled default.
# Example:
# default = AIConfig(
# enabled=True,
# model=ModelConfig(name='gpt-4'),
# provider=ProviderConfig(name='openai'),
# messages=[LDMessage(role='system', content='You are a helpful assistant.')],
# )
# config_value, tracker = aiclient.config(ai_config_key, context, default, {'myUserVariable': "Testing Variable"})
config_value, tracker = aiclient.config(
ai_config_key,
context,
variables={'myUserVariable': "Testing Variable"}
)
if not config_value.enabled:
print("AI Config is disabled")
return
messages = [message.to_dict() for message in (config_value.messages or [])]
# Add the user input to the conversation
USER_INPUT = "What can you help me with?"
print("User Input:\n", USER_INPUT)
messages.append({'role': 'user', 'content': USER_INPUT})
# Track the OpenAI completion with LaunchDarkly metrics
completion = tracker.track_openai_metrics(
lambda:
openai_client.chat.completions.create(
model=config_value.model.name,
messages=messages,
)
)
ai_response = completion.choices[0].message.content
# Add the AI response to the conversation history.
messages.append({'role': 'assistant', 'content': ai_response})
print("AI Response:\n", ai_response)
# Continue the conversation by adding user input to the messages list and invoking the LLM again.
print("Success.")
# Close the client to flush events and close the connection.
ldclient.get().close()