feat: Resolve conflict, auto committed by CodeFlow

This commit is contained in:
fuqingxu.fqx 2024-08-19 14:13:49 +08:00
commit e6dc64b528
6 changed files with 485 additions and 339 deletions

View file

@ -1,11 +1,11 @@
system_prompt:
cn: |
你是一个名为MemoryScope的智能助理,请用中文简洁地回答问题。当前时间是{date_time}。
你是一个名为MemoryScope的智能助理,请用中文简洁地回答用户问题。当前时间是{date_time}。
en: |
You are a helpful assistant named MemoryScope, please answer questions concisely in English. The current time is {date_time}.
memory_prompt:
cn: |
在回答用户问题时,请尽量忘记大部分不相关的信息。只有当用户提供的信息与当前问题或对话内容非常相关时,才记住这些信息并加以使用。请确保你的回答简洁、准确,并聚焦于用户当前的问题或对话主题。消息:
在回答用户问题时,请尽量忘记大部分不相关的信息。只有当信息与用户问题或对话内容非常相关时,才记住这些信息并加以使用。请确保你的回答简洁、准确,并聚焦于用户问题或对话主题。信息:
en: |
When responding to user questions, please try to forget most of the irrelevant information. Only remember and use the information provided by the user if it is highly relevant to the current question or conversation. Ensure that your answers are concise, accurate, and focused on the user's current question or the topic of discussion. Information:
When responding to user questions, please try to forget most of the irrelevant information. Only remember and use the information if it is highly relevant to the current question or conversation. Ensure that your answers are concise, accurate, and focused on the user's current question or the topic of discussion. Information:

View file

@ -35,7 +35,7 @@ memory_service:
list_memory:
class: core.operation.frontend_operation
workflow: set_query,retrieve_top_memory,print_memory
description: "read all long-term memory of the user, use `refresh_time=5` to refresh screen."
description: "read all long-term memory of the user, use `refresh_time=5` to refresh screen every 5 seconds."
delete_memory:
class: core.operation.frontend_operation
@ -160,6 +160,7 @@ model:
module_name: dashscope_generation
model_name: qwen-max
max_tokens: 2000
temperature: 0.01
embedding_model:
class: core.models.llama_index_embedding_model
module_name: dashscope_embedding

View file

@ -24,7 +24,7 @@ class LlamaIndexGenerationModel(BaseModel):
MODEL_REGISTRY.register("dashscope_generation", DashScope)
MODEL_REGISTRY.register("openai_generation", OpenAI)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.logger = self.logger.get_logger(self.logger.append_timestamp("llama_index_generation_model"))
@ -69,7 +69,8 @@ class LlamaIndexGenerationModel(BaseModel):
if stream:
def gen() -> ModelResponseGen:
for response in call_result:
model_response.message.content += response.delta
delta = response.delta if response.delta else ""
model_response.message.content += delta
model_response.delta = response.delta
yield model_response
@ -86,7 +87,8 @@ class LlamaIndexGenerationModel(BaseModel):
def _call(self, model_response: ModelResponse, stream: bool = False, **kwargs):
data = model_response.meta_data["data"]
data.pop("stream") # special case for OpenAI model, is this necessary?
# FIXME: special case for OpenAI model, is this necessary?
data.pop("stream")
if "prompt" in data:
if stream:
model_response.raw = self.model.stream_complete(**data)

View file

@ -1,4 +1,5 @@
import random
import pickle
from typing import Dict, List
from llama_index.core import VectorStoreIndex
@ -159,17 +160,21 @@ class LlamaIndexEsMemoryStore(BaseMemoryStore):
TextNode: The converted TextNode with content and metadata from the MemoryNode.
"""
embedding = memory_node.vector
key_vector_str = pickle.dumps(memory_node.key_vector).decode('latin1')
if not embedding:
embedding = None
metadatas = memory_node.model_dump(exclude={"content",
"vector",
"key_vector",
"score_recall",
"score_rank",
"score_rerank"})
metadatas["key_vector"] = key_vector_str
return TextNode(id_=memory_node.memory_id,
text=memory_node.content,
embedding=embedding,
text_template="{content}",
metadata=memory_node.model_dump(exclude={"content",
"vector",
"score_recall",
"score_rank",
"score_rerank"}))
metadata=metadatas)
@ -184,6 +189,9 @@ class LlamaIndexEsMemoryStore(BaseMemoryStore):
Returns:
MemoryNode: The converted MemoryNode with text and metadata from the NodeWithScore.
"""
key_vector = pickle.loads(text_node.metadata["key_vector"].encode('latin1'))
text_node.metadata["vector"] = text_node.embedding if text_node.embedding else []
text_node.metadata["score_recall"] = text_node.score
text_node.metadata["key_vector"] = key_vector
return MemoryNode(content=text_node.text, **text_node.metadata)

772
poetry.lock generated

File diff suppressed because it is too large Load diff

View file

@ -19,21 +19,22 @@ keywords = ["Memory", "LLM"]
[tool.poetry.dependencies]
python = "^3.10"
llama-index-core = "0.10.44"
llama-index-embeddings-dashscope = "0.1.3"
llama-index-llms-dashscope = "0.1.2"
llama-index-postprocessor-dashscope-rerank-custom = "0.1.0"
llama-index-vector-stores-elasticsearch = "0.2.0"
llama-index-core = ">=0.10.45"
llama-index-embeddings-dashscope = ">=0.1.3"
llama-index-llms-dashscope = ">=0.1.2"
llama-index-postprocessor-dashscope-rerank-custom = ">=0.1.0"
llama-index-vector-stores-elasticsearch = ">=0.2.0"
pyfiglet = ">=1.0.2"
termcolor = ">=2.4.0"
llama-index = "0.10.45"
fire = "0.6.0"
questionary = "2.0.1"
llama-index = ">=0.10.45"
fire = ">=0.6.0"
questionary = ">=2.0.1"
pydantic = ">=2.7.1"
dashscope = ">=1.19.1"
elasticsearch = ">=8.14.0"
pyyaml = ">=6.0.1"
numpy = ">=1.26.4"
rich = ">=13.0.0"
[tool.poetry.group.dev.dependencies]
pre-commit = "^3.7.1"