Browse Source

V0.1.0

pull/1/head
gjl 2 years ago
parent
commit
b4bedf8a67
4 changed files with 35 additions and 29 deletions
  1. +0
    -0
      src/mindpilot/app/agent/__init__.py
  2. +30
    -0
      src/mindpilot/app/agent/agents_registry.py
  3. +5
    -29
      src/mindpilot/app/chat/chat.py
  4. +0
    -0
      src/mindpilot/app/tools/__init__.py

+ 0
- 0
src/mindpilot/app/agent/__init__.py View File


+ 30
- 0
src/mindpilot/app/agent/agents_registry.py View File

@@ -0,0 +1,30 @@
from typing import List, Sequence

from langchain import hub
from langchain.agents import AgentExecutor, create_structured_chat_agent
from langchain_core.callbacks import BaseCallbackHandler
from langchain_core.language_models import BaseLanguageModel
from langchain_core.messages import SystemMessage
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.tools import BaseTool


def agents_registry(
llm: BaseLanguageModel,
tools: Sequence[BaseTool] = [],
callbacks: List[BaseCallbackHandler] = [],
prompt: str = None,
verbose: bool = False,
):
if prompt is not None:
prompt = ChatPromptTemplate.from_messages([SystemMessage(content=prompt)])
else:
prompt = hub.pull("hwchase17/structured-chat-agent") # default prompt
agent = create_structured_chat_agent(llm=llm, tools=tools, prompt=prompt)

agent_executor = AgentExecutor(
agent=agent, tools=tools, verbose=verbose, callbacks=callbacks
)

return agent_executor


+ 5
- 29
src/mindpilot/app/chat/chat.py View File

@@ -12,8 +12,7 @@ from langchain_core.messages import AIMessage, HumanMessage, convert_to_messages
from langchain_core.output_parsers import StrOutputParser
from sse_starlette.sse import EventSourceResponse

from chatchat.server.agent.agent_factory.agents_registry import agents_registry
from chatchat.server.agent.container import container
from ..agent.agents_registry import agents_registry
from chatchat.server.api_server.api_schemas import OpenAIChatOutput
from chatchat.server.callback_handler.agent_callback_handler import (
AgentExecutorAsyncIteratorCallbackHandler,
@@ -58,7 +57,6 @@ def create_models_chains(
):
memory = None
chat_prompt = None
container.metadata = metadata

if history:
history = [History.from_data(h) for h in history]
@@ -96,7 +94,7 @@ def create_models_chains(


async def chat(
query: str = Body(..., description="用户输入", examples=["恼羞成怒"]),
query: str = Body(..., description="用户输入"),
metadata: dict = Body({}, description="附件,可能是图像或者其他功能", examples=[]),
conversation_id: str = Body("", description="对话框ID"),
message_id: str = Body(None, description="数据库消息ID"),
@@ -106,8 +104,8 @@ async def chat(
description="历史对话,设为一个整数可以从数据库中读取历史消息",
examples=[
[
{"role": "user", "content": "我们来玩成语接龙,我先来,生龙活虎"},
{"role": "assistant", "content": "虎头虎脑"},
{"role": "user", "content": "你好"},
{"role": "assistant", "content": "您好,我是智能Agent桌面助手MindPilot,请问有什么可以帮您?"},
]
],
),
@@ -121,19 +119,6 @@ async def chat(
callback = AgentExecutorAsyncIteratorCallbackHandler()
callbacks = [callback]

# Enable langchain-chatchat to support langfuse
import os

langfuse_secret_key = os.environ.get("LANGFUSE_SECRET_KEY")
langfuse_public_key = os.environ.get("LANGFUSE_PUBLIC_KEY")
langfuse_host = os.environ.get("LANGFUSE_HOST")
if langfuse_secret_key and langfuse_public_key and langfuse_host:
from langfuse import Langfuse
from langfuse.callback import CallbackHandler

langfuse_handler = CallbackHandler()
callbacks.append(langfuse_handler)

models, prompts = create_models_from_config(
callbacks=callbacks, configs=chat_model_config, stream=stream
)
@@ -220,16 +205,7 @@ async def chat(
message_id=message_id,
)
yield ret.model_dump_json()
# yield OpenAIChatOutput( # return blank text lastly
# id=f"chat{uuid.uuid4()}",
# object="chat.completion.chunk",
# content="",
# role="assistant",
# model=models["llm_model"].model_name,
# status = data["status"],
# message_type = data["message_type"],
# message_id=message_id,
# )

await task

if stream:


+ 0
- 0
src/mindpilot/app/tools/__init__.py View File


Loading…
Cancel
Save