mirror of
https://github.com/langbot-app/LangBot.git
synced 2026-08-11 21:30:59 +00:00
feat: reset all associated session after bot and pipeline modified (#1517)
This commit is contained in:
committed by
GitHub
parent
62f0a938a8
commit
3e707b4b6e
@@ -93,6 +93,11 @@ class BotService:
|
|||||||
if runtime_bot.enable:
|
if runtime_bot.enable:
|
||||||
await runtime_bot.run()
|
await runtime_bot.run()
|
||||||
|
|
||||||
|
# update all conversation that use this bot
|
||||||
|
for session in self.ap.sess_mgr.session_list:
|
||||||
|
if session.using_conversation is not None and session.using_conversation.bot_uuid == bot_uuid:
|
||||||
|
session.using_conversation = None
|
||||||
|
|
||||||
async def delete_bot(self, bot_uuid: str) -> None:
|
async def delete_bot(self, bot_uuid: str) -> None:
|
||||||
"""删除机器人"""
|
"""删除机器人"""
|
||||||
await self.ap.platform_mgr.remove_bot(bot_uuid)
|
await self.ap.platform_mgr.remove_bot(bot_uuid)
|
||||||
|
|||||||
@@ -112,6 +112,11 @@ class PipelineService:
|
|||||||
await self.ap.pipeline_mgr.remove_pipeline(pipeline_uuid)
|
await self.ap.pipeline_mgr.remove_pipeline(pipeline_uuid)
|
||||||
await self.ap.pipeline_mgr.load_pipeline(pipeline)
|
await self.ap.pipeline_mgr.load_pipeline(pipeline)
|
||||||
|
|
||||||
|
# update all conversation that use this pipeline
|
||||||
|
for session in self.ap.sess_mgr.session_list:
|
||||||
|
if session.using_conversation is not None and session.using_conversation.pipeline_uuid == pipeline_uuid:
|
||||||
|
session.using_conversation = None
|
||||||
|
|
||||||
async def delete_pipeline(self, pipeline_uuid: str) -> None:
|
async def delete_pipeline(self, pipeline_uuid: str) -> None:
|
||||||
await self.ap.persistence_mgr.execute_async(
|
await self.ap.persistence_mgr.execute_async(
|
||||||
sqlalchemy.delete(persistence_pipeline.LegacyPipeline).where(
|
sqlalchemy.delete(persistence_pipeline.LegacyPipeline).where(
|
||||||
|
|||||||
@@ -137,6 +137,12 @@ class Conversation(pydantic.BaseModel):
|
|||||||
|
|
||||||
use_funcs: typing.Optional[list[tools_entities.LLMFunction]]
|
use_funcs: typing.Optional[list[tools_entities.LLMFunction]]
|
||||||
|
|
||||||
|
pipeline_uuid: str
|
||||||
|
"""流水线UUID。"""
|
||||||
|
|
||||||
|
bot_uuid: str
|
||||||
|
"""机器人UUID。"""
|
||||||
|
|
||||||
uuid: typing.Optional[str] = None
|
uuid: typing.Optional[str] = None
|
||||||
"""该对话的 uuid,在创建时不会自动生成。而是当使用 Dify API 等由外部管理对话信息的服务时,用于绑定外部的会话。具体如何使用,取决于 Runner。"""
|
"""该对话的 uuid,在创建时不会自动生成。而是当使用 Dify API 等由外部管理对话信息的服务时,用于绑定外部的会话。具体如何使用,取决于 Runner。"""
|
||||||
|
|
||||||
|
|||||||
@@ -45,6 +45,8 @@ class PreProcessor(stage.PipelineStage):
|
|||||||
query,
|
query,
|
||||||
session,
|
session,
|
||||||
query.pipeline_config['ai']['local-agent']['prompt'],
|
query.pipeline_config['ai']['local-agent']['prompt'],
|
||||||
|
query.pipeline_uuid,
|
||||||
|
query.bot_uuid,
|
||||||
)
|
)
|
||||||
|
|
||||||
conversation.use_llm_model = llm_model
|
conversation.use_llm_model = llm_model
|
||||||
|
|||||||
@@ -41,6 +41,8 @@ class SessionManager:
|
|||||||
query: core_entities.Query,
|
query: core_entities.Query,
|
||||||
session: core_entities.Session,
|
session: core_entities.Session,
|
||||||
prompt_config: list[dict],
|
prompt_config: list[dict],
|
||||||
|
pipeline_uuid: str,
|
||||||
|
bot_uuid: str,
|
||||||
) -> core_entities.Conversation:
|
) -> core_entities.Conversation:
|
||||||
"""获取对话或创建对话"""
|
"""获取对话或创建对话"""
|
||||||
|
|
||||||
@@ -58,13 +60,15 @@ class SessionManager:
|
|||||||
messages=prompt_messages,
|
messages=prompt_messages,
|
||||||
)
|
)
|
||||||
|
|
||||||
if session.using_conversation is None:
|
if session.using_conversation is None or session.using_conversation.pipeline_uuid != pipeline_uuid:
|
||||||
conversation = core_entities.Conversation(
|
conversation = core_entities.Conversation(
|
||||||
prompt=prompt,
|
prompt=prompt,
|
||||||
messages=[],
|
messages=[],
|
||||||
use_funcs=await self.ap.tool_mgr.get_all_functions(
|
use_funcs=await self.ap.tool_mgr.get_all_functions(
|
||||||
plugin_enabled=True,
|
plugin_enabled=True,
|
||||||
),
|
),
|
||||||
|
pipeline_uuid=pipeline_uuid,
|
||||||
|
bot_uuid=bot_uuid,
|
||||||
)
|
)
|
||||||
session.conversations.append(conversation)
|
session.conversations.append(conversation)
|
||||||
session.using_conversation = conversation
|
session.using_conversation = conversation
|
||||||
|
|||||||
Reference in New Issue
Block a user