# llm_starter **Repository Path**: pinghailinfeng/llm_starter ## Basic Information - **Project Name**: llm_starter - **Description**: 吴恩达llm cookbook python代码仓库 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-11-18 - **Last Updated**: 2026-01-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # LLM Starter 这是一个基于Ollama本地模型和大语言模型的入门项目,包含了10天的学习内容,涵盖了从基础使用到高级应用的各个方面。 ## 项目概述 本项目通过10天的学习计划,系统地介绍了如何使用本地部署的Ollama模型和各种大语言模型API。每天的学习内容都包含理论知识和实践示例,帮助开发者快速掌握大语言模型的应用开发。项目从基础的模型交互开始,逐步深入到提示词工程、界面开发、Token计算,最后到高级的LangChain框架和RAG应用。 ## 环境要求 - Python 3.8+ - Ollama(本地部署) - 已安装的Ollama模型(如llama3.2、qwen3:0.6b等) - 可选:Jupyter Notebook(用于运行day9和day10的.ipynb文件) ## 安装依赖 ```bash pip install -r requirements.txt ``` ## 项目结构 ``` llm_starter/ ├── day1/ # Ollama基础使用 ├── day2/ # Gradio界面开发 ├── day3/ # 提示词工程基础 ├── day4/ # 格式化输出技巧 ├── day5/ # 文本推断与信息提取 ├── day6/ # 文本转换与翻译 ├── day7/ # 文本扩写与生成 ├── day8/ # 对话上下文管理与应用 ├── day9/ # Token计算与模型理解 ├── day10/ # LangChain框架与RAG应用 ├── img/ # 项目相关图片 └── requirements.txt ``` ## 学习内容 ### Day 1: Ollama基础使用 - 了解Ollama的基本概念和安装方法 - 学习如何下载和管理本地模型 - 掌握通过API与模型交互的基本方法 - 实现简单的对话应用 **主要文件:** - `app.py` - 基础对话示例 - `get_model.py` - 获取可用模型列表 - `list_running_models.py` - 列出正在运行的模型 - `embedding_text.py` - 文本嵌入示例 ### Day 2: Gradio界面开发 - 学习使用Gradio创建交互式界面 - 实现基于Ollama的聊天机器人应用 - 探索不同界面组件的使用方法 **主要文件:** - `gradio_demo.py` - Gradio基础演示 - `gradio_qwen3_chat.py` - 基于Qwen3的聊天机器人 ### Day 3: 提示词工程基础 - 掌握基本的提示词设计原则 - 学习不同类型的提示词格式 - 理解如何通过提示词控制输出结果 **主要文件:** - `01.basic_prompt.py` - 基本提示词示例 - `02.format_prompt.py` - 格式化提示词 - `03.match_condition_prompt.py` - 匹配条件的提示词 - `04.not_match_condtion_prompt.py` - 不匹配条件的提示词 - `05.few_short_prompt.py` - 少样本提示词 - `06.summarize_short_format_prompt.py` - 短格式总结提示词 ### Day 4: 格式化输出技巧 - 学习如何控制模型的输出格式 - 掌握生成表格、列表等结构化内容的方法 - 实现产品描述等实际应用场景 **主要文件:** - `product_desc_basic.py` - 基础产品描述生成 - `product_desc_shorter.py` - 简洁产品描述 - `product_desc_shorter_detail.py` - 详细产品描述 - `product_desc_shorter_with_table.py` - 带表格的产品描述 ### Day 5: 文本推断与信息提取 - 学习从文本中提取特定信息 - 掌握情感分析和主题分类技术 - 实现多段文本的综合分析 **主要文件:** - `text_Inferring_demo.py` - 文本推断示例 - `multi_part_text_Inferring.py` - 多段文本推断 - `prompt_information_gather.py` - 信息收集提示词 - `test_Inferring_senior.py` - 高级推断测试 ### Day 6: 文本转换与翻译 - 学习使用LLM进行文本转换 - 掌握多语言翻译技术 - 实现不同语调和风格的文本转换 **主要文件:** - `text_transforming.py` - 文本转换基础 - `judge_language.py` - 语言判断 - `multi_language_transforming.py` - 多语言转换 - `transforming_app.py` - 转换应用 - `transforming_different_tone.py` - 不同语调转换 ### Day 7: 文本扩写与生成 - 学习使用LLM扩写短文本 - 掌握生成详细内容的技术 - 实现创意写作和内容生成 **主要文件:** - `text_expanding_basic.py` - 基础文本扩写 ### Day 8: 对话上下文管理与应用 - 学习如何管理多轮对话的上下文 - 掌握Panel界面框架的使用 - 实现实用的对话应用场景 **主要文件:** - `01.get_joke.py` - 获取笑话的简单应用 - `02.get_chat_context.py` - 对话上下文管理 - `03.order_meal_bot.py` - 完整的订餐机器人应用 - `glm_chat_bot.py` - GLM聊天机器人 - `kimi2_demo.py` - Kimi模型演示 ### Day 9: Token计算与模型理解 - 深入理解Token和文本处理机制 - 学习如何计算和优化Token使用 - 掌握模型输入输出的限制与技巧 **主要文件:** - `01.token_calculator.py` - Token计算器工具 - `02.Token Language Models the Chat Format and Tokens.ipynb` - Token与语言模型深入理解 - `03.Classification.ipynb` - 分类任务实现 - `04.Moderation.ipynb` - 内容审核 - `05.Chain of Thought Reasoning.ipynb` - 思维链推理 - `06.Prompt Chaining Prompts.ipynb` - 提示词链技术 ### Day 10: LangChain框架与RAG应用 - 学习LangChain框架的核心组件 - 掌握RAG(检索增强生成)技术 - 实现基于自有知识的问答系统 **主要文件:** - `1.instroduction.md` - LangChain介绍 - `2.Document Loading.ipynb` - 文档加载技术 - `3. Splitting.ipynb` - 文档分割策略 - `4.Vectorstores and Embeddings.ipynb` - 向量存储与嵌入 - `5.retrieval.ipynb` - 信息检索技术 - `6.Answer question.ipynb` - 问答系统实现 - `7.chat.ipynb` - 对话系统开发 - `8.summary.md` - 课程总结 - `ddog_search.py` - DuckDuckGo搜索示例 - `lanchain_memory_demo.py` - LangChain记忆演示 - `langchain_starter.py` - LangChain入门示例 ## 快速开始 1. 确保已安装并启动Ollama服务 2. 下载所需模型(如qwen3:0.6b): ```bash ollama pull qwen3:0.6b ``` 3. 运行任意示例文件,例如: ```bash python day1/app.py ``` 4. 尝试Gradio聊天应用: ```bash python day2/gradio_qwen3_chat.py ``` ## API使用示例 ### 基本对话 ```python from openai import OpenAI client = OpenAI(base_url="http://localhost:11434/v1/", api_key="linfeng") response = client.chat.completions.create( model="qwen3:0.6b", messages=[ {"role": "user", "content": "你好,请介绍一下你自己!"}, ], temperature=0.9, max_tokens=150, ) print(response.choices[0].message.content) ``` ### 提示词工程示例 ```python from tool import get_completion text = "您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务..." prompt = f""" 把用三个反引号括起来的文本总结成一句话。 ```{text}``` """ response = get_completion(prompt) print(response) ``` ### LangChain RAG应用示例 ```python from langchain_community.document_loaders import PyPDFLoader from langchain_community.embeddings import OllamaEmbeddings from langchain_community.vectorstores import Chroma from langchain.text_splitter import RecursiveCharacterTextSplitter from langchain.chains import RetrievalQA from langchain_community.llms import Ollama # 加载文档 loader = PyPDFLoader("your_document.pdf") documents = loader.load() # 分割文档 text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=200) texts = text_splitter.split_documents(documents) # 创建嵌入和向量存储 embeddings = OllamaEmbeddings(model="llama3.2") vectorstore = Chroma.from_documents(documents=texts, embedding=embeddings) # 创建问答链 llm = Ollama(model="llama3.2") qa_chain = RetrievalQA.from_chain_type( llm=llm, chain_type="stuff", retriever=vectorstore.as_retriever() ) # 提问并获取答案 query = "你的问题是什么?" result = qa_chain.invoke(query) print(result["result"]) ``` ## 贡献指南 欢迎提交Issue和Pull Request来改进这个项目。 ## 许可证 本项目采用MIT许可证。 ## 参考资料 - [Ollama官方文档](https://ollama.com/) - [Gradio官方文档](https://gradio.app/) - [OpenAI API文档](https://platform.openai.com/docs/api-reference/chat) - [LangChain官方文档](https://python.langchain.com/) - [Panel官方文档](https://panel.holoviz.org/) - [ChromaDB文档](https://docs.trychroma.com/)