Whats Fonts Used in a Web page

如何查看网页的字体 当你浏览网页,看到一个好看的字体的时候,想知道它是什么字体,自己也想用一下这个字体。怎么知道呢?Firebug或者Webkit Inspector可以,但是不简单,有一个插件可解决。这就是WhatFont插件。例如我看到这个页面的代码很好看: ![[Pasted_image_20250608231522.png]] 我是在Firefox中看到的,就要在Firefox中看什么字体,如果放在chrome中,就有可能看到的效果不一样。在Firefox中先安装WhatFont插件,然后看下什么字体: ![[Pasted_image_20250608232034.png]] 这个字体是monospace,可是monospace也是操作系统映射的,一般在font.conf中。如何知道这个monospace到底被操作系统映射成什么字体的呢? $ fc-match -v "monospace" Pattern has 40 elts (size 48) family: "Noto Sans Mono"(w) familylang: "en"(s) style: "Regular"(s) stylelang: "en"(s) fullname: "Noto Sans Mono Regular"(w) fullnamelang: "en"(s) slant: 0(i)(s) weight: 80(f)(s) width: 100(f)(s) size: 12(f)(s) pixelsize: 12.5(f)(s) foundry: "GOOG"(s) antialias: True(w) hintstyle: 1(i)(w) hinting: True(s) verticallayout: False(s) autohint: False(s) globaladvance: True(s) file: "/usr/share/fonts/truetype/noto/NotoSansMono-Regular.ttf"(s) index: 0(i)(w) 可以看到,最终渲染的字体是“Noto Sans Mono Regular”,这个才是最终显示字体。我们也可以做个实验,找个WPS,用“Noto Sans Mono Regular”字体输入一段文字,看下效果,确实一样。 ![[Pasted_image_20250608232654.png]]

June 8, 2025

Install and Using FastGPT

部署和使用FastGPT 一、部署FastGPT 1.1 安装docker 安装docker和docker compose,参见docker安装。 1.2 Docker部署FastGPT mkdir fastgpt cd fastgpt curl -O https://raw.githubusercontent.com/labring/FastGPT/main/projects/app/data/config.json # pgvector 版本(测试推荐,简单快捷) curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-pgvector.yml # oceanbase 版本(需要将init.sql和docker-compose.yml放在同一个文件夹,方便挂载) # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-oceanbase/docker-compose.yml # curl -o init.sql https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-oceanbase/init.sql # milvus 版本 # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-milvus.yml # zilliz 版本 # curl -o docker-compose.yml https://raw.githubusercontent.com/labring/FastGPT/main/deploy/docker/docker-compose-zilliz.yml 启动: sudo docker compose up -d sudo docker ps 访问: 通过 ip:3000 直接访问(注意开放防火墙)。登录用户名为 root,密码为docker-compose.yml环境变量里设置的 DEFAULT_ROOT_PSW。初次密码是1234。 1.3 非容器化部署 安装nodejs、mongodb、pg数据库及pgvector插件。 克隆fastGPT源码。...

June 2, 2025

Index of LLamaIndex

LLamaIndex里面的Index CVP栈里面的V就是一种Index。使用LLamaIndex的时候,会用到各类的Index。 一、索引类型 1. 列表索引 顺序的节点,逐个进行查询。 2. 向量索引 可以提供语义相似度进行检索。 3. 树索引 从下而上构建,上级是下级的总结。每个父节点包含子节点的信息。使用时候可以从父节点开始,或者直接从叶节点开始。 4. 关键词索引 关键词和节点(LlamaIndex中的Node)之间是N-to-N的连接。 5. 图索引 有关系结构的索引,使用的时候可以在这个基础上进行二次索引,并且在找到相关节点后,进行相关知识的关联检索。 二、构建和使用索引 documents = SimpleDirectoryReader('data').load_data() index = GPTVectorStoreIndex.from_documents(documents) query_engine = index.as_query_engine() response=query_engine.query("What did the author do growing up?") print(response) 三、保存和加载索引 索引生成需要调用GPT等模型,保存索引可以多次使用,从加快速度,节省token,降低大模型使用成本 保存索引: index.storage_context.persist() 加载索引: from llama_index import StorageContext, load_index_from_storage storage_context = StorageContext.from_defaults(persist_dir="./storage") indexindex = load_index_from_storage(storage_context)

June 2, 2025

How to Call LLM Model

如何调用一个大模型 OpenAI调用方式 调用大模型一般通过OpenAI API的协议进行调用,更多的还是直接使用SDK,可以很方便的调用。官方的SDK有JS/Python/.net/java/go等。另外,微软也提供了几种语言的SDK兼容OpenAI API和微软云自己的OpenAI服务。此外,还有很多第三方的SDK。 OpenAI API的官方SDK调用方式为: pip install openai from openai import OpenAI client = OpenAI() response = client.responses.create( model="gpt-4.1", input="Write a one-sentence bedtime story about a unicorn." ) print(response.output_text) 流式的访问: from openai import OpenAI client = OpenAI() stream = client.responses.create( model="gpt-4.1", input=[ { "role": "user", "content": "Say 'double bubble bath' ten times fast.", }, ], stream=True, ) for event in stream: print(event) 文件上传: # 1、还可以先上传一个pdf文件,然后使用该文件的引用调用下一个函数。 # 2、或者直接将pdf以base64等方式直接一次调用进行传递。 异步调用:...

June 1, 2025

How to Use Ollama

如何使用Ollama Python访问 conda activate llm_test pip install ollama ollama_test.py import ollama response = ollama.chat(model="llama3.1", messages=[ {"role": "user", "content": "什么是数据治理,和数据管理有什么区别?"}, ]) print(response) $ python ollama_test.py model='llama3.1' created_at='2025-05-21T07:43:26.260998065Z' done=True done_reason='stop' total_duration=3600133750 load_duration=1005090191 prompt_eval_count=23 prompt_eval_duration=104226959 eval_count=96 eval_duration=2489433343 message=Message(role='assistant', content='答:数据治理是一种指挥、协调及控制数据的方式,使得数据能够被有效地生产、使用。它包含了数据质量、安全性、可用性的保证,以及对数据的访问、运算和存储等方面的管理。\n\n不同于传统的数据管理,数据治理更加注重的是数据的全生命周期管理及控制,包括数据的创建、使用、更新、移除等过程。', images=None, tool_calls=None) 容器运行且能访问GPU 安装Nvidia-Container-Tookit curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \ && curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \ sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \ sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list sudo apt-get update sudo apt-get install -y nvidia-container-toolkit // 配置 sudo nvidia-ctk runtime configure --runtime=docker $ cat /etc/docker/daemon....

May 21, 2025

Audio Editor

音频编辑器 Audacity vs Ardour reddit上找了个评价,说ardour功能很强大,但是简单应用audacity更合适。并且ardour只在linux上免费。 于是就装了个audacity,AppImage的包。用它剪切了一段音频,导出声音文件,用起来方便。

May 18, 2025

Using HuggingFace model

使用Hugging Face的模型进行语音识别 conda create -n transformers_env conda activate transformers_env conda install transformers 查看下Pytorch的安装需求,支持Cuda版本12.2以上: nvidia-smi NVIDIA-SMI 535.216.01 Driver Version: 535.216.01 CUDA Version: 12.2 ![[Pasted_image_20250518231307.png]] 上次升级驱动版本,导致无法登陆,这次换xfce后,windows manager已经换了,下次升级下驱动和cuda tools再试试。本次就直接使用Cuda 11.8。 安装Pytorch 2.7 // conda环境下: pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu118 准备HuggingFace的脚本: // cat run.py from transformers import pipeline transcriber = pipeline( "automatic-speech-recognition", model="BELLE-2/Belle-whisper-large-v3-zh-punct", return_timestamps=True ) transcriber.model.config.forced_decoder_ids = ( transcriber.tokenizer.get_decoder_prompt_ids( language="zh", task="transcribe" ) ) transcription = transcriber("/home/xxxxxx/workdir/git/work/whisper.cpp/models/sounds/20250513_175944.wav") print(transcription["text"]) 这个版本BELLE-2/Belle-whisper-large-v3-zh-punct大概6.17G。 python run.py // torch.OutOfMemoryError: CUDA out of memory....

May 18, 2025

Install Whisper Cpp

安装whisper.cpp去转换语音到文字 1. 条件 Debian 12 GPU 4060 2. 安装 安装编译工具build_essential sudo apt install build-essential 克隆whisper.cpp仓库,并编译 git clone https://github.com/ggerganov/whisper.cpp.git cd whisper.cpp make -j 3. 使用 下载模型 cd model ./download-ggml-model.sh large-v3-turbo ./download-ggml-model.sh large-v3 ll -rt 1624555275 May 15 01:00 ggml-large-v3-turbo.bin 3095033483 May 17 19:40 ggml-large-v3.bin 格式是m4a,发现不直接支持,安装ffmpeg进行转换: ffmpeg -i ./models/sounds/20250509_095502.m4a -acodec pcm_s16le -ac 1 -ar 16000 ./models/sounds/20250509_095502.wav ffmpeg -i ./models/sounds/20250513_175944.m4a ./models/sounds/20250513_175944.wav 直接进行转换,行是行,但是有点慢,提示CPU在工作 $ ./build/bin/whisper-cli --device cuda --language Chinese -nt -otxt -m /home/xxxxx/workdir/git/work/whisper.cpp/models/ggml-large-v3-turbo.bin -f ....

May 15, 2025

Learning LLamaIndex

学习LLamaIndex第一个程序 一、先安装 pip install llama-index pip install llama-index-llms-ollama pip install llama-index-embeddings-ollama 二、开发环境 开一个写代码的工具: jupyter notebook 也可以使用Pycharm来使用conda环境进行代码的编写: 设置/项目/python 解释器,添加解释器的时候选择conda环境,并选择一个已经存在的环境或者新建环境。 也可以使用VSCode: # https://code.visualstudio.com/Download sudo apt install ./xxxx.deb 三、基本概念 LLamaIndex核心概念: 数据加载:DataLoaders 数据分割:NodeParsers 向量索引:VectorIndex 集成引擎:QueryEngine 向量数据库: ChromaDB Mivlus 2.1 ChromaDB 使用十分简单: import chromadb client = chromadb.Client() collection = client.create_collection("docs") collection.add(ids=["id1"], documents=["This is a document"]) results = collection.query(query_texts=["Find similar docs"], n_results=1) 2.2 Embedding Ollama ollama serve // 使用Ollama原生的REST API curl http://localhost:11434/api/embed -d '{ "model": "bge-m3", "input": "Does Ollama support embedding models?...

May 7, 2025

Whats Agent

Agent Agent接收一个请求后,通过反复调用大模型以及动作接口,将输入请求的目的进行实现。调用大模型的目的是让大模型告诉我们,针对当前的背景和目标或子目标,我们应该做什么事情或者执行什么具体动作,或者什么也做不了。具体的动作驱动外部的外部的任务,并将结果反馈回来作为后继执行的背景(上下文)。 ![[whats-agent 2025-05-04 09.19.51.excalidraw]] ![[Pasted_image_20250504102833.png]] 利用模型可以给出解决问题的中间过程,逐步的达到目标。这非常类似人的思考过程。这也是Chain of Thought,思考链的名字由来。也就产生了如何优化模型的Prompt,让它的输出更适合解决问题的一门学问,这就是CoT优化。 Agent的执行过程像是一个流程,但是这个流程和AI工作流不同。首先目的不同,其次这个流程是动态的,根据要解决的问题不同,它实际执行出来的流程实例也不同。 大模型的使用本身就可以是流程化的。类似人类的审批流程,很多工作流系统能画出审批的流程,而某种常用的流程就类似现在的RAG。Agent类似灵活工作流,上个审批人可以决定下一个审批人是谁,这样整个审批流程就是一个动态的过程,具体的工作流程是无法提前画出来的。 ![[whats-agent 2025-05-04 10.09.34.excalidraw]] ![[Pasted_image_20250504103126.png]] 受限当前LLM的能力,全自动运行的Agent的体验/性能/可靠性还需要进一步发展。同环境下小范围的协作Agent/RAG反而是当下受信任和有价值的。它平衡了信任/技术成熟度/体验等方面。 Agent的进化考虑这些方面:更多的输入和输出能力,支持输入的更准确查询和解析;对输入的安全考虑;更合适的模型;减低延时和提升体验。

May 4, 2025