|
1 | 1 | from llama_index.core.memory import ChatSummaryMemoryBuffer
|
2 |
| -from llama_index.core.llms import ChatMessage # Add this import |
| 2 | +from llama_index.core.llms import ChatMessage |
3 | 3 | from llama_index.llms.openai import OpenAI as LlamaOpenAI
|
4 | 4 | from openai import OpenAI as PerplexityClient
|
| 5 | +from dotenv import load_dotenv |
5 | 6 | import os
|
6 | 7 |
|
| 8 | +# Load environment variables from .env file |
| 9 | +load_dotenv() |
| 10 | + |
7 | 11 | # Configure LLM for memory summarization
|
8 | 12 | llm = LlamaOpenAI(
|
9 | 13 | model="gpt-4o-2024-08-06",
|
10 |
| - api_key=os.environ["PERPLEXITY_API_KEY"], |
| 14 | + api_key=os.getenv("PERPLEXITY_API_KEY"), |
11 | 15 | base_url="https://api.openai.com/v1/chat/completions"
|
12 | 16 | )
|
13 | 17 |
|
|
25 | 29 |
|
26 | 30 | # Create API client
|
27 | 31 | sonar_client = PerplexityClient(
|
28 |
| - api_key=os.environ["PERPLEXITY_API_KEY"], |
| 32 | + api_key=os.getenv("PERPLEXITY_API_KEY"), |
29 | 33 | base_url="https://api.perplexity.ai"
|
30 | 34 | )
|
31 | 35 |
|
32 | 36 | def chat_with_memory(user_query: str):
|
33 |
| - # Store user message as ChatMessage |
34 | 37 | memory.put(ChatMessage(role="user", content=user_query))
|
35 |
| - |
36 |
| - # Get optimized message history |
37 | 38 | messages = memory.get()
|
38 | 39 |
|
39 |
| - # Convert to Perplexity-compatible format |
40 | 40 | messages_dict = [
|
41 | 41 | {"role": m.role, "content": m.content}
|
42 | 42 | for m in messages
|
43 | 43 | ]
|
44 | 44 |
|
45 |
| - # Execute API call |
46 | 45 | response = sonar_client.chat.completions.create(
|
47 | 46 | model="sonar-pro",
|
48 | 47 | messages=messages_dict,
|
49 | 48 | temperature=0.3
|
50 | 49 | )
|
51 | 50 |
|
52 |
| - # Store response |
53 | 51 | assistant_response = response.choices[0].message.content
|
54 | 52 | memory.put(ChatMessage(
|
55 | 53 | role="assistant",
|
56 | 54 | content=assistant_response
|
57 | 55 | ))
|
58 | 56 |
|
59 | 57 | return assistant_response
|
60 |
| - |
0 commit comments