微软的 GraphRAG + AutoGen + Ollama + Chainlit = 本地和免费的多代理 RAG 超级机器人

浅谈人工智能之基于AutoGen Studio+Ollama本地大模型构建AI Agent 随着人工智能技术的飞速发展,大型语言模型已成为推动创新应用的关键力量。然而,云服务的使用虽然便捷,但面临着数据安全、延迟及成本等挑战。为解决这些问题,越来越多的开发者选择在本地部署大模型。本文将介绍如何利用AutoGen Studio与Ollama这一强大的组合,在本地搭建高效、安全的AI Agent。通过这一方案,开发者不仅能够享受大模型的强大功能,还能确保数据的私密性和降低运行成本。 阅读详情

在这里插入图片描述

集成和关键组件的图形摘要

R检索增强生成 (RAG) 是一种功能强大的工具,它使大型语言模型 (LLM) 能够访问现实世界的数据,从而做出更明智的响应。这是通过将模型与矢量数据库集成以进行实时学习和适应来实现的。此功能使 RAG 成为聊天机器人和虚拟助手等应用程序的首选,这些应用程序对实时准确且合理的响应需求很高。这种技术的高级变体称为图形检索增强生成 (GraphRAG),它将基于图形的知识检索的优势与 LLM 相结合,进一步增强了自然语言处理的能力。与依赖矢量相似性搜索的传统 RAG 方法不同,GraphRAG 从原始文本构建结构化知识图谱,捕获实体、关系和关键声明。这可以增强 LLM 理解和综合复杂数据集及其关系的能力,从而产生更准确且基于上下文的响应。

在这里插入图片描述

摘自麻省理工学院 Markus Beuhler 的一篇论文(链接在此处)

AutoGen 是 Microsoft 推出的一款工具,它通过自动化和优化曾经非常复杂且需要大量人工的工作流程,简化了基于多代理 LLM 的复杂应用程序的开发。将 AutoGen 想象成一个可以与多个 GPT 交互的平台,而不仅仅是一个。每个 GPT 都充当单独的“代理”,在综合操作中发挥着独特的作用。将 GraphRAG 的检索优势与 AutoGen AI 代理的对话和面向任务的功能相结合,可以打造出强大的 AI 助手,能够高效处理详细查询、生成和执行代码、创建多页科学报告以及进行数据分析。此外,离线本地 LLM(例如 Ollama 或 LM Studio 的 LLM)可确保经济高效且安全的数据处理。本地 LLM 消除了与在线 LLM 相关的高成本和隐私风险,将敏感数据保留在组织内部并降低运营费用。

本文将指导您使用 GraphRAG 检索系统构建多智能体 AI 应用程序,该系统完全在本地机器上运行,并且免费使用。以下是此应用程序的关键组件:

  1. GraphRAG 的知识搜索方法通过函数调用与 AutoGen 代理集成。
  2. GraphRAG(本地和全局搜索)配置为支持来自 Ollama 的本地模型进行推理和嵌入。
  3. AutoGen 已扩展,以支持通过 Lite-LLM 代理服务器从 Ollama 使用非 OpenAI LLM 进行函数调用。
  4. Chainlit UI 用于处理连续对话、多线程和用户输入设置。

G鉴于我的材料科学和计算建模背景,我想通过从 ABAQUS(一种 FEA 工程软件)的文档以及一些碳纤维和聚合物的技术数据表构建知识图谱来测试此应用程序。考虑到此数据集的复杂性,使用本地 LLM 的整体准确性可能会更好。未来的文章将探索使用不同模型进行嵌入和推理的基准研究的经验。尽管如此,我还是渴望从该领域的科学期刊和数据中构建更复杂的知识图谱,测试高级工程代码生成任务,并利用对话助手集思广益,探讨我专业范围内的科学主题。应用程序如下所示。

在这里插入图片描述

带有示例查询的主应用程序 UI。最后两个有相同的查询,但第一个是全局搜索,而第二个是本地搜索。

在这里插入图片描述

小部件设置在本地和全局搜索之间切换,设置社区级别和代长度。

开发是在 Linux 环境中使用 Windows Subsystem for Linux (WSL) 和 Visual Studio Code 在 Windows 11 PC 上完成的,该 PC 配备 i9 第 13 代处理器、64 GB RAM 和 24 GB Nvidia RTX 4090。为了在开发和测试此应用程序时获得最佳体验,建议使用 Linux 发行版或 WSL。我尚未在原生 Windows 环境中对此进行测试。有关安装 WSL 和设置 Python 和 Conda 环境的指南,请参阅本文(此处)。本文末尾提供了其他参考资料和相关信息。

这是源代码存储库的链接。现在,让我们开始吧!

安装模型依赖项并克隆存储库。

安装来自 Ollama 的语言模型以进行推理和嵌入

# Mistral 用于 GraphRAG 推理
ollama pull mistral 

# Nomic-Embed-Text 用于 GraphRAG 嵌入
ollama pull nomic-embed-text 

# LLama3 用于 Autogen 推理
ollama pull llama3 

# 在本地服务器上托管 Ollama:http://localhost:11434
 ollama serve

创建 conda 环境并安装这些依赖项

# 创建并激活 conda 环境
conda create -n RAG_agents python=3.12 
conda activate RAG_agents 

# Ollama 的 Lite-LLM 代理服务器
pip install 'litellm[proxy]' 

# 安装 Ollama
 pip install ollama 

# Microsoft AutoGen
 pip install pyautogen "pyautogen[retrievechat]"  

# Microsoft GraphRAG
 pip install graphrag 

# 文本令牌编码器-解码器
pip install tiktoken 

# Chainlit Python 应用程序
pip install chainlit 

# 克隆我的 Git-hub 存储库
git clone https://github.com/karthik-codex/autogen_graphRAG.git 

# (奖励)将 PDF 文件转换为 GraphRAG 的 Markdown
 pip install marker-pdf 

# (奖励)仅当您安装了 Marker-pdf 时,因为它默认会删除 GPU CUDA 支持
conda install pytorch torchvision torchaudio pytorch-cuda=12.1-c pytorch-c nvidia

您将在我的 GitHub 存储库中找到以下文件。

  1. /requirements.txt—包含上述所有软件包的列表
  2. /utils/settings.yaml—包含使用 Mistral 7B 和 Ollama 的 Nomic-Text-Embedding 进行 GraphRAG 离线嵌入和索引的 LLM 配置。 您将使用此文件替换首次在工作目录中初始化 GraphRAG 时创建的文件。
  3. /utils/chainlit_agents.py—包含包括 AutoGen 助手和用户代理的类定义。这允许跟踪多个代理并将其消息显示在 UI 中。(感谢 Chainlit 团队构建模板*)**。*
  4. /utils/embedding.py—包含使用 Ollama 进行本地搜索查询的 GraphRAG 嵌入修改后的嵌入函数。您将使用此文件替换 GraphRAG 包中的文件(更多信息见下文)
  5. utils/openai_embeddings_llm.py—包含使用 Ollama 进行 GraphRAG 索引和嵌入的修改后的嵌入函数。您将使用此文件替换 GraphRAG 包中的文件(更多信息见下文)。
  6. /appUI.py—包含设置代理、定义 GraphRAG 搜索功能、跟踪和处理消息以及在 Chainlit UI 中显示它们的主要异步函数。
  7. /utils/pdf_to_markdown.py—奖励文件包含将 PDF 文件转换为 markdown 文件以供 GraphRAG 提取的功能。

创建 GraphRAG 知识库。

在存储库的根文件夹中初始化 GraphRAG

# 创建一个新文件夹“input”来放置 GraphRAG 的输入文件(.txt 或 .md)
mkdir -p ./input 

# 初始化 GraphRAG 以在根目录中创建所需的文件和文件夹
python -m graphrag.index --init --root 。

# 移动 settings.yaml 文件以替换由 GraphRAG 创建的文件 --init 
mv ./utils/settings.yaml ./

配置 GraphRAG 设置以支持来自 Ollama 的本地模型

下面是一段settings.yaml说明 LLM 创建索引和嵌入的配置的代码片段。GraphRAG 需要 32k 上下文长度才能进行索引,因此 Mistral 是所选模型。对于嵌入,选择了 Nomic-embed-text,但您可以尝试使用 Ollama 的其他嵌入。无需设置${GRAPHRAG_API_KEY},因为不需要访问这些本地模型的端点。

encoding_model: cl100k_base 
skip_workflows: [] 
llm:
  api_key: $ {GRAPHRAG_API_KEY}
  类型: openai_chat  # 或 azure_openai_chat
  模型: mistral 
  model_supports_json: true 
  api_base: http://localhost:11434/v1  
。。。嵌入:async_mode:threaded # 或 asyncio llm:api_key:${GRAPHRAG_API_KEY}类型:openai_embedding # 或 azure_openai_embedding模型:nomic_embed_text api_base:http://localhost:11434 / api 。。。输入:#将输入文件模式更改为.md 或 .txt类型:文件#或 blob文件类型:文本#或 csv base_dir:“输入”文件编码:utf-8文件模式:“。*\\.md$”



    
  
     
      
     
      



  
    
    
   
   
                                         

您可以在根目录中的“input”文件夹中指定包含输入文件的文件夹。文本和 markdown 文件都可以使用。您可以使用将/utils/pdf_to_markdown.pyPDF 转换为 markdown 文件,然后将其放在“input”文件夹中。处理多种文件格式的问题尚未解决,但这是一个可以解决的问题。

在运行 GraphRAG 进行索引、创建嵌入和执行本地查询之前,您必须修改 GraphRAG 包中的 Python 文件openai_embeddings_llm.py 和embedding.py。如果没有进行此修改,GraphRAG 在创建嵌入时会抛出错误,因为它不会将“nomic-embed-text”识别为来自 Ollama 的有效嵌入模型。在我的设置中,这些文件位于/home/karthik/miniconda3/envs/RAG_agents/lib/python3.12/site-packages/graphrag/llm/openai/openai_embeddings_llm.py和/home/karthik/miniconda3/envs/RAG_agents/lib/python3.12/site-packages/graphrag/query/llm/oai/embedding.py

您可以使用命令来找到这些文件sudo find / -name openai_embeddings_llm.py。

创建嵌入和知识图。

最后,我们创建嵌入并使用全局或本地搜索方法测试知识图谱。完成嵌入过程后,您可以在 GraphRAG 工作目录的“output”文件夹中找到输出工件(.parquet 文件)和报告(.json 和 .logs),在本例中,该文件夹是根文件夹。

# 创建知识图谱 - 这需要一些时间
python -m graphrag.index --root . 

# 测试 GraphRAG
 python -m graphrag.query --root . --method global "<插入您的查询>"

启动 Lite-LLM 服务器并从终端运行应用程序

下面是在运行应用程序之前初始化服务器的命令。我选择了 Llama3:8b 来测试这个应用程序。如果硬件允许,您可以使用更大的模型。有关 Lite-LLM 的更多信息,请访问此链接。现在,您可以从另一个终端运行该应用程序。确保您处于正确的 conda 环境中。

# 从终端启动服务器
litellm --model ollama_chat/llama3 

# 从另一个终端运行应用程序
chainlit run appUI.py

细分:appUI.py 的核心组件

导入 Python 库

导入autogen
从rich导入 打印
导入chainlit作为cl
从typing_extensions导入Annotated
从chainlit.input_widget导入(
   Select、Slider、Switch)
从autogen导入AssistantAgent、UserProxyAgent
从utils.chainlit_agents导入ChainlitUserProxyAgent、ChainlitAssistantAgent
从graphrag.query.cli导入run_global_search、run_local_search

您会注意到从chainlit_agents导入了两个类。这些 AutoGen 代理的包装器类使 Chainlit 能够跟踪其对话并处理终止或其他用户输入。您可以在此处阅读更多相关信息。

配置 AutoGen 代理

AutoGen 代理通过 Lite-LLM 代理服务器利用来自 Ollama 的模型。这是必要的,因为 AutoGen 不支持通过非 OpenAI 推理模型进行函数调用。代理服务器允许使用 Ollama 模型进行函数调用和代码执行。

# 来自 Lite-LLM 服务器的 LLama3 LLM,用于代理 #
 llm_config_autogen = { 
    “seed” : 40 ,   # 更改不同试验的种子
    “temperature” : 0 , 
    “config_list” : [{ “model” : “litellm” , 
                     “base_url” : “http://0.0.0.0:4000/” , 
                     “api_key” : 'ollama' }, 
    ], 
    “timeout” : 60000 , 
}

在聊天开始时实例化代理并输入用户设置

我创建了三个 Chainlit 小部件(开关、选择和滑块)作为用户设置,以选择 GraphRAG 搜索类型、社区级别和内容生成类型。打开时,开关小部件使用 GraphRAG 本地搜索方法进行查询。内容生成的选择选项包括“优先列表”、“单个段落”、“多个段落”和“多页报告”。滑块小部件使用选项 0、1 和 2 选择社区生成级别。您可以在此处阅读有关 GraphRAG 社区的更多信息。

@cl.on_chat_start 
async  def  on_chat_start (): 
  try : 
    settings = await cl.ChatSettings( 
            [       
                Switch( id = "Search_type" , label= "(GraphRAG) 本地搜索" , initial= True ),        
                Select( 
                    id = "Gen_type" , 
                    label= "(GraphRAG) 内容类型" , 
                    values=[ "优先列表" , "单段落" , "多段落" , "多页报告" ], 
                    initial_index= 1 , 
                ),           
                Slider( 
                    id = "社区" , 
                    label= "(GraphRAG) 社区级别" , 
                    initial= 0 , 
                    min = 0 , 
                    max = 2 , 
                    step= 1 , 
                ), 

            ] 
        ).send() 

    response_type = settings[ "Gen_type" ] 
    community = settings[ "社区" ] 
    local_search = settings[ "Search_type" ] 
    
    cl.user_session.设置(“Gen_type”,response_type)
    cl.user_session.设置(“Community”,community)
    cl.user_session.设置(“Search_type”,local_search)

    retriever = AssistantAgent(
       name= “Retriever”,
       llm_config=llm_config_autogen,
       system_message= “”“仅执行函数query_graphRAG来查找上下文。
                    当提供答案时输出‘TERMINATE’。”“”,
       max_consecutive_auto_reply= 1,
       human_input_mode= “NEVER”,
       description= “Retriever Agent”
     )

    user_proxy = ChainlitUserProxyAgent(
        name= “User_Proxy”,
        human_input_mode= “始终”,
        llm_config=llm_config_autogen,
        is_termination_msg=lambda x:x.get(“content”,“”)。rstrip()。endswith(“TERMINATE”),
        code_execution_config = False,
        system_message = '''人类管理员。与检索器交互以提供任何上下文''',
        description = “用户代理代理”
     )
    
    print(“设置代理。”)

    cl.user_session。设置(“查询代理”,user_proxy)
    cl.user_session。设置(“检索器”,检索器)

    msg = cl.Message(content = f“”“您好!您今天想完成什么任务?       
                     “”“,
                     author = “User_Proxy”)
    await msg.send()

    print(“消息已发送。”)
    
  except Exception as e:
    print(“错误:”,e)
    通过

我选择不使用 Chainlit 包装器类作为检索器助手代理。这样我就可以禁用对检索器输出的跟踪,并直接捕获来自 GraphRAG 函数的响应。原因是当响应通过检索器时,文本会丢失其格式,包括空格和段落缩进。在生成带有主标题和副标题的多页报告时,此问题尤其明显。我可以通过绕过 Chainlit 包装器并直接从 GraphRAG 函数检索输出来保留原始格式。您将在下面看到我是如何实现这一点的。

更新输入设置中的更改

此功能可检测对设置中的选择、开关和滑块小部件所做的任何更改,以便在后续查询中反映这些更改。

@cl.on_settings_update 
async  def  setup_agent ( settings ): 
    response_type = settings[ "Gen_type" ] 
    community = settings[ "Community" ] 
    local_search = settings[ "Search_type" ] 
    cl.user_session.set ( " Gen_type" , response_type) 
    cl.user_session.set ( "Community" , community) cl.user_session.set     ( " Search_type" , local_search)打印( " on_settings_update" , settings)

使用来自代理和用户的传入消息更新 UI。

这是应用程序的核心部分,它创建了一个有两个代理的群聊,定义了一个函数“state_transition”来管理对话序列,并提供异步RAG查询功能。

您会注意到,INPUT_DIR ,ROOT_DIR, RESPONSE_TYPE, COMMUNTIY基于 bool 参数传递到本地和全局搜索 GraphRAG 查询函数中的参数LOCAL_SEARCH。ROOT_DIR,设置为’.’— 如果您在不同的目录中初始化了 GraphRAG,请注意这一点。

异步函数“query_graphRAG”调用 GraphRAG 全局或本地搜索方法。您会注意到函数await cl.Message(content=result.response).send()内部的一行async def query_graphRAG直接检索 RAG 查询的输出并保留检索到的内容的文本格式。

@cl.on_message 
async  def  run_conversation ( message:cl.Message ): 
    print ( "正在运行对话" ) 
    CONTEXT = message.content 

    MAX_ITER = 10
     INPUT_DIR = None
     ROOT_DIR = '.'
     RESPONSE_TYPE = cl.user_session.get( "Gen_type" ) 
    COMMUNITY = cl.user_session.get( "Community" ) 
    LOCAL_SEARCH = cl.user_session.get( "Search_type" ) 

    print ( "设置群聊" ) 

    trieser = cl.user_session.get( "Retriever" ) 
    user_proxy = cl.user_session.get( "查询代理" ) 

    def  state_transition ( last_speaker, groupchat ): 
        messages = groupchat.messages
        如果last_speaker是user_proxy: 
            return trieser
        如果last_speaker是withdrawer:
            如果messages[- 1 ][ "content" ].lower()不在 [ 'math_expert' , 'physics_expert' ]中: return user_proxy else :如果messages[- 1 ][ "content" ].lower() == 'math_expert' : return user_proxy else:返回user_proxy else:传递返回None async def query_graphRAG(          question:Annotated [ str,'包含您想要从 RAG 搜索中获取的信息的查询字符串' ])-> str:如果LOCAL_SEARCH:            result = run_local_search(INPUT_DIR,ROOT_DIR,COMMUNITY,RESPONSE_TYPE,question)else:            result = run_global_search(INPUT_DIR,ROOT_DIR,COMMUNITY,RESPONSE_TYPE,question)等待cl.Message(content = result)。send()返回[retriever]中的调用者的结果:         d_retrieve_content = caller.register_for_llm(            description = “检索代码生成和问答内容。”,api_style= "函数"         )(query_graphRAG)
                
            
                
                    
                
                    
        
            
             

      

                          
        

        

        
        

    




    对于[user_proxy, triest]中的代理:
        agents.register_for_execution()(d_retrieve_content) 

    groupchat = autogen.GroupChat( 
        agent=[user_proxy, triest], 
        messages=[], 
        max_round=MAX_ITER, 
        Speaker_selection_method=state_transition, 
        allow_repeat_speaker= True , 
    ) 
    manager = autogen.GroupChatManager(groupchat=groupchat, 
                                       llm_config=llm_config_autogen, 
                                       is_termination_msg= lambda x: x.get( "content" , "" ) and x.get( "content" , "" ).rstrip().endswith( "TERMINATE" ), 
                                       code_execution_config= False , 
                                       )     

# -------------------- 对话逻辑。根据您要完成的任务进行编辑以更改您的第一条消息。 ----------------------------------------- #
    如果 len (groupchat.messages) == 0:
      等待cl.make_async(user_proxy.initiate_chat)( manager,message=CONTEXT,)
    elif  len (groupchat.messages) < MAX_ITER:
      等待cl.make_async(user_proxy.send)( manager,message=CONTEXT,)
    elif  len (groupchat.messages) == MAX_ITER:  
      等待cl.make_async(user_proxy.send)( manager,message= “exit”,)

对于此应用程序,我们只需要两个代理。您可以添加/修改代理并配置“state_transition”函数来协调对话中的说话者选择,以实现更复杂的工作流程。

最后的想法

这是我第一次涉足 AI 代理、LLM 和 RAG,过去几周我直接开始创建此实现,绕过了许多基础知识。虽然此实现并不完美,但它是开发更复杂应用程序的绝佳模板。它为集成多个功能和编码代理奠定了坚实的基础,并使您能够构建复杂的工作流程、自定义代理交互并根据需要增强功能。

​

如何学习AI大模型?

作为一名热心肠的互联网老兵,我决定把宝贵的AI知识分享给大家。 至于能学习到多少就看你的学习毅力和能力了 。我已将重要的AI大模型资料包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

这份完整版的大模型 AI 学习资料已经上传优快云,朋友们如果需要可以微信扫描下方优快云官方认证二维码免费领取【保证100%免费】

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!

img

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。

img

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

img

四、AI大模型商业化落地方案

img

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

使用Chainlit 一分钟搭建完成deepseek官网对话页面 Chainlit 是一个用于构建和部署对话式人工智能应用的开源框架。它旨在帮助开发者快速创建、测试和部署基于自然语言处理(NLP)的对话系统。Chainlit 提供了一套工具和接口,使得开发者可以轻松地集成各种 NLP 模型、对话管理组件以及后端服务,从而构建出功能丰富的对话应用。 阅读详情

相关推荐

本地电脑大模型系列之 11 微软的 GraphRAG + AutoGen + Ollama + Chainlit = 完全本地多智能体 RAG 超级机器人(教程含源码)

这是我第一次涉足 AI 代理、LLM 和 RAG,过去几周我直接开始创建此实现,绕过了很多基础知识。虽然此实现并不完美,但它是开发更复杂应用程序的绝佳模板。它为集成多个功能和编码代理奠定了坚实的基础,并使您能够构建复杂的工作流程、自定义代理交互并根据需要增强功能。

iCloudEnd的博客 2081

使用微软的 GraphRAG + AutoGen + Ollama + Chainlit 来打造一个完全本地且免费的多代理RAG超级机器人

微软整合了 GraphRAG、AutoGen、Ollama 和 Chainlit 技术,打造出强大的多智能体 RAG(检索增强生成)超级机器人,无需依赖在线 LLM,即可进行复杂、基于情境的响应和本地数据处理。

2301_81940605的博客 1215

ThinkAdmin后台Getshell

通过文件包含或者图片马的方式Getshell。修改其可允许的文件类型,php不允许,可添加。系统管理->系统参数配置->本地服务器存储。

hot_milk1的博客 1867

大模型部署 | 如何本地部署LLM服务?以ollama为例(安装ollama、启动服务、API测试)

{"model":"qwen1.5-4B","created_at":"2024-04-13T08:50:19.674913783Z","response":"我是阿里云开发的超大规模语言模型,我叫通义千问。{"model":"qwen1.5-4B","created_at":"2024-04-13T08:41:52.481530089Z","message":{"role":"assistant","content":"你好,我是通义千问。(1)拉取ollama官方已经有的模型,进行LLM服务部署。

sqlora的专栏 772

【全网最新】使用 1panel面板 部署若依系统( springboot 和 vue)项目

打开前端项目的vue.config.js文件,检查devServer下的proxy代理部分,然后将下面这个端口修改为你要在打包后访问的端口,即使用nginx代理前的接口。这个端口默认是80端口,这里把其修改为不会冲突的8010端口,后台接口的地址配置为9080,不过感觉这里设置的8010和9080可能没有用,因为部署前端静态页面是,也配置了一次网页的外部接口和api的接口,后期有空了再验证。打开右侧的Maven,点击:生存期->package,然后点击运行,等待打包成功,包在如图所示的文件夹中。

老薛的专栏 1758

【滤波跟踪】多雷达协同下的多目标跟踪:航迹管理优化与卡尔曼滤波融合策略

本文深入探讨了多雷达协同下的多目标跟踪技术,聚焦于航迹管理优化与卡尔曼滤波融合策略两大核心。通过分析分布式融合架构、航迹关联算法(如匈牙利算法)以及应对非线性与机动目标的扩展卡尔曼滤波(EKF)与无迹卡尔曼滤波(UKF)等方法,旨在解决多源信息融合难题,提升复杂环境下目标跟踪的精度与鲁棒性。

weixin_29214199的博客 282

从零开始Autogenstudio配合ollama安装本地大模型

可以输入命令行:ollama list 查看已安装的大模型。2、切换环境:完成环境创建后,切换至新环境:命令:conda activate autogen_studio。2、安装本地大模型 打开Anaconda Prompt 输入命令行:ollama run (大模型名称)切换到刚刚打开的Anaconda Prompt中,粘贴刚刚复制的命令,ollama会自动下载安装大模型。进入官网点击右上方Models,进入大模型列表,选择需要安装的大模型。测试大模型是否链接成功:点击 Test Model 测试。

javin4715的博客 4864

告别复杂编码!用GNURadio + VLC + USRP三步搞定无线视频“直播”(附ffmpeg转码命令)

本文介绍了一种基于GNURadio、VLC和USRP的无线视频传输方案,无需复杂编码即可实现实时视频传输。通过三步流程(工具准备、音频验证、视频传输)和ffmpeg转码命令,帮助用户快速搭建系统,适用于教学演示和原型开发。方案特别强调实时显示效果和带宽优化技巧。

weixin_31714129的博客 359

大模型部署框架 Ollama:环境变量设置与常用 CLI 命令

​ 本文介绍 Ollama 的环境变量设置,常用 CLI 命令及其运行示例。环境变量用于配置 Ollama 的运行环境和行为,CLI 命令用于与本地大模型的交互和管理。 ​

AAI666666的博客 3159

告别切换烦恼!用Parallels Desktop的Host-Only网卡,在macOS上直接访问虚拟机里的公司内网

本文详细介绍了如何在macOS上使用Parallels Desktop的Host-Only网卡直接访问虚拟机内的公司内网,告别频繁切换操作系统的烦恼。通过配置Host-Only网络模式,实现主机与虚拟机的安全高效通信,特别适合需要频繁访问内网资源的IT从业者。文章包含分步指南、自动化脚本和常见问题解决方案,帮助用户优化工作流程。

weixin_28739079的博客 364

深度剖析OpenHarmony AI Engine:开发板端侧大模型推理插件机制全链路拆解

/ 加载动态库// 获取符号地址// 关闭动态库// 获取错误信息public:// 单例获取// 销毁实例// 加载插件// 卸载插件private:// 获取插件实例// 插件映射锁// 插件映射表public:Plugin();~Plugin();// 加载算法// 卸载算法// 获取算法实例// 设置算法实例private:// 算法接口指针// 动态库句柄// 算法ID// 版本信息// 配置信息字符串int len;

m0_67505153的博客 509

微软Graphrag+ollama实现本地部署 使用qwen2.5模型

为什么不直接跑微软的Graphrag源码,而要ollama部署到本地呢?答案也是非常简单,直接跑这个项目的话,需要openai的apikey,花tokens,很烧money!!!而通过ollama部署到本地,就可以轻松免费玩Graphrag。

m0_62040469的博客 2678

Python进阶005:修改Jupyter Notebook的工作路径

1、Jupyter Notebook简介 2、修改Jupyter Notebook的工作路径 如下三个步骤: 一、安装notebook 在CMD命令行中输入: pip install notebook 二、启动notebook jupyter notebook 启动后发现是在你的用户目录下,如下图所示,但是该目录下有很多的其他文件或文件夹,因此我想把这个环境切换到我单门创建的一个文件夹中。 三、创建notebook的配置文件 在CMD命令行中执行: jupyter notebook --genera

若北辰 1389

GraphRAG × AutoGen × Ollama × Chainlit = 本地免费多代理 RAG 超级 AI 助手

作为一名对前沿技术充满热情的研究者,我深刻感受到检索增强生成(Retrieval-Augmented Generation, RAG)对大型语言模型(LLMs)的变革性影响。 RAG 是一种强大且极具潜力的工具,它通过将模型与矢量数据库集成,使LLMs能够实时获取和利用现实世界的数据,从而生成更明智、更精准的响应。这种能力为大型语言模型的实际应用打开了新大门,尤其是在需要实时学习和快速适应的场景中。

Gaga246的博客 880

下载MNIST数据集并使用python将数据转换成NumPy数组(源码解析)

下载MNIST数据集并使用python将数据转换成NumPy数组首先来分析init_mnist函数接下来继续分析load_mnist函数实现数据集转换的python脚本的代码显示MNIST图像并确认数据 下载MNIST数据集并将数据转换成NumPy数组的Python脚本里面最重要的就是load_mnist函数,其他项目想要调用数据集的话,就可以调用load_mnist函数,得到一个字典类型的数据,字典的值是一个Numpy数组。 这些过程是如何实现的,现在开始逐字逐句分析源码: 在load_mnist函数中第

及时总结 4269

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

上网需要使用代理时,ollama模型的拉取方式

可以为ollama.service 服务设置环境变量。: 在以服务启动后,默认以。

wdadsad的博客 1万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

GraphRAG实战--graphrag+autogen+ollama+chainlit实现本地智能机器人

今天主要给大家分享另一个关于GraphRAG实战案例,通过结合graphrag、ollama、autogen、chainlit实现自己的智能机器人(retrieval-augmented generation )是一种在自然语言处理(NLP)领域中较为先进的技术方法。该技术通过将检索模型和生成模型结合在一起,提高了生成内容的相关性和质量,有效缓解了大型语言模型(如GPT系列)在生成文本时可能出现的“幻觉”(即生成不准确、不相关或虚构的信息);

python123456_的博客 1885

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

ollama+autogen

【代码】ollama+autogen。

qq_41638872的博客 1453

ollama + autogen排雷

启动后的url为:http://0.0.0.0:,实际调用需要将"0.0.0.0"替换为"localhost",否则回报错误"oserror winerror 10049在其上下文中该请求的地址无效"语法:代表参数,实际输入为具体的名字,不需要输入注意:当前雷可能随着版本迭代更新掉。

weixin_40101756的博客 1804
上一篇: GraphRAG:复杂查询的知识图谱新框架
下一篇: 小某书爆火的大模型入门书,有中文版了!《大模型应用开发极简入门》
AI大模型_学习君
博客等级 码龄3年 6138粉丝 551原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值