Building AI Agents with LLMs, RAG, and Knowledge Graphs A practical guide to autonomous and modern AI agents (Salvatore Raieli, Gabriele Iuculano) (z-library.sk, 1lib.sk, z-lib.sk)
AI
No Description
10
Views
0
Downloads
0.00
Total Donations
Registered users can read the full content for free
Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.
Page
1
(This page has no text content)
Page
2
Building AI Agents with LLMs, RAG, and Knowledge Graphs A practical guide to autonomous and modern AI agents Salvatore Raieli | Gabriele Iuculano
Page
3
Building AI Agents with LLMs, RAG, and Knowledge Graphs Copyright © 2025 Packt Publishing All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews. Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the authors, nor Packt Publishing or its dealers and distributors, will be held liable for any damages caused or alleged to have been caused directly or indirectly by this book. Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information. Portfolio Director: Gebin George Relationship Lead: Ali Abdi Project Manager: Prajakta Naik Content Engineer: Mark D’Souza Technical Editor: Irfa Ansari Copy Editor: Safis Editing Indexer: Tejal Soni Production Designer: Alishon Falcon Growth Lead: Kunal Sawant First published: July 2025 Production reference: 1300625 Published by Packt Publishing Ltd. Grosvenor House 11 St Paul’s Square Birmingham B3 1RB, UK ISBN 978-1-83508-706-0 www.packtpub.com
Page
4
To Dorotea, Maria, Vincenzo, and Chiara, with love. A small thank you for the immense support. – Salvatore Raieli To Marta, for your strength when mine wavered, and for your light in difficult times. Thank you for walking with me through the storms. This book echoes the path we walked together. – Gabriele Iuculano
Page
5
The author acknowledges the use of cutting-edge AI, in this case, ChatGPT and Grammarly, with the sole aim of enhancing the language and clarity within the book, thereby ensuring a smooth reading experience for readers. It's important to note that the content itself has been crafted by the author and edited by a professional publishing team.
Page
6
Contributors About the authors Salvatore Raieli is a senior data scientist in a pharmaceutical company with a focus on using AI for drug discovery against cancer. He has led different multidisciplinary projects with LLMs, agents, NLP, and other AI techniques. He has an MSc in AI and a PhD in immunology and has experience in building neural networks to solve complex problems with large datasets. He enjoys building AI applications for concrete challenges that can lead to societal benefits. In his spare time, he writes on his popularization blog on AI (on Medium). Gabriele Iuculano boasts extensive expertise in embedded systems and AI. Leading a team as the test platform architect, Gabriele has been instrumental in architecting a sophisticated simulation system that underpins a cutting-edge test automation platform. He is committed to integrating AI-driven solutions, focusing on predictive maintenance systems to anticipate needs and prevent downtimes. He obtained his MSc in AI from the University of Leeds, demonstrating expertise in leveraging AI for system efficiencies. Gabriele aims to revolutionize current business through the power of new disruptive technologies such as AI.
Page
7
About the reviewers Malhar Deshpande serves as the director and principal product owner of the AI Center of Excellence at Clean Harbors, where he leads AI initiatives, blending data science, machine learning, and generative AI to transform environmental services. With expertise in technology, innovation, and extensive experience in building AI teams, Malhar Deshpande is recognized for driving innovative solutions. He holds a Bachelor of Engineering, a master’s in information systems, and an MBA from Northeastern University. As a technical reviewer, he is honored to contribute to this book, the AI and technology community, and the future of AI. I am grateful to my parents, Mohan and Asha Deshpande, for their unwavering support and focus on education. Thanks to my wife, Shruti; my daughter, Tara; and my brother, Dr. Rupak, his wife, Dr. Riteeka, and their daughter, Samaira, for their love and encouragement throughout this journey. Lalit Chourey is a seasoned software engineer with over a decade of experience in developing scalable backend services and distributed systems, specializing in AI infrastructure for LLM training. Currently a software engineer at Meta Platforms, Lalit leads a team in architecting robust systems for machine learning training. Previously at Microsoft, he led the development of several large-scale cloud services on Azure. Lalit holds a BTech in information technology from the National Institute of Technology, Bhopal, India.
Page
8
Preface xiii Part 1: The AI Agent Engine: From Text to Large Language Models 1 Analyzing Text Data with Deep Learning 3 Technical requirements 4 Representing text for AI 4 One-hot encoding 4 Bag-of-words 6 TF-IDF 8 Embedding, application, and representation 11 Word2vec 12 A notion of similarity for text 15 Properties of embeddings 17 RNNs, LSTMs, GRUs, and CNNs for text 19 RNNs 19 LSTMs 22 GRUs 24 CNNs for text 26 Performing sentiment analysis with embedding and deep learning 28 Summary 33 2 The Transformer: The Model Behind the Modern AI Revolution 35 Technical requirements 35 Exploring attention and self-attention 36 Introducing the transformer model 42 Training a transformer 47 Exploring masked language modeling 50 Visualizing internal mechanisms 52 Applying a transformer 57 Summary 64 Table of Contents
Page
9
Table of Contentsviii 3 Exploring LLMs as a Powerful AI Engine 65 Technical requirements 65 Discovering the evolution of LLMs 66 The scaling law 66 Emergent properties 69 Context length 71 Mixture of experts 72 Instruction tuning, fine-tuning, and alignment 74 Exploring smaller and more efficient LLMs 81 Exploring multimodal models 84 Understanding hallucinations and ethical and legal issues 93 Prompt engineering 97 Summary 101 Further reading 102 Part 2: AI Agents and Retrieval of Knowledge 4 Building a Web Scraping Agent with an LLM 105 Technical requirements 106 Understanding the brain, perception, and action paradigm 106 The brain 109 The perception 113 Action 114 Classifying AI agents 115 Understanding the abilities of single- agent and multiple-agent systems 119 Exploring the principal libraries 122 LangChain 123 Haystack 124 LlamaIndex 126 Semantic Kernel 126 AutoGen 127 Choosing an LLM agent framework 128 Creating an agent to search the web 129 Summary 133 Further reading 133 5 Extending Your Agent with RAG to Prevent Hallucinations 135 Technical requirements 136 Exploring naïve RAG 136 Retrieval, optimization, and augmentation 146 Chunking strategies 146
Page
10
Table of Contents ix Embedding strategies 149 Embedding databases 155 Evaluating the output 158 Comparison between RAG and fine- tuning 161 Using RAG to build a movie recommendation agent 163 Summary 167 Further reading 167 6 Advanced RAG Techniques for Information Retrieval and Augmentation 169 Technical requirements 170 Discussing naïve RAG issues 170 Exploring the advanced RAG pipeline 172 Hierarchical indexing 172 Hypothetical questions and HyDE 174 Context enrichment 176 Query transformation 177 Keyword-based search and hybrid search 178 Query routing 179 Reranking 180 Response optimization 185 Modular RAG and its integration with other systems 188 Training and training-free approaches 190 Implementing an advanced RAG pipeline 193 Understanding the scalability and performance of RAG 197 Data scalability, storage, and preprocessing 197 Parallel processing 199 Security and privacy 202 Open questions and future perspectives 205 Summary 211 Further reading 211 7 Creating and Connecting a Knowledge Graph to an AI Agent 213 Technical requirements 214 Introduction to knowledge graphs 214 A formal definition of graphs and knowledge graphs 216 Taxonomies and ontologies 220 Creating a knowledge graph with your LLM 221 Knowledge creation 222 Creating a knowledge graph with an LLM 226 Knowledge assessment 230 Knowledge cleaning 231 Knowledge enrichment 232 Knowledge hosting and deployment 234 Retrieving information with a knowledge graph and an LLM 236 Graph-based indexing 238
Page
11
Table of Contentsx Graph-guided retrieval 239 GraphRAG applications 242 Understanding graph reasoning 245 Knowledge graph embeddings 246 Graph neural networks 247 LLMs reasoning on knowledge graphs 249 Ongoing challenges in knowledge graphs and GraphRAG 252 Summary 254 Further reading 255 8 Reinforcement Learning and AI Agents 257 Technical requirements 258 Introduction to reinforcement learning 258 The multi-armed bandit problem 262 Markov decision processes 270 Deep reinforcement learning 274 Model-free versus model-based approaches 275 On-policy versus off-policy methods 276 Exploring deep RL in detail 277 Challenges and future direction for deep RL 289 Learning how to play a video game with reinforcement learning 290 LLM interactions with RL models 304 RL-enhanced LLMs 304 LLM-enhanced RL 305 Key takeaways 312 Summary 314 Further reading 314 Part 3: Creating Sophisticated AI to Solve Complex Scenarios 9 Creating Single- and Multi-Agent Systems 319 Technical requirements 321 Introduction to autonomous agents 321 Toolformer 326 HuggingGPT 327 ChemCrow 339 SwiftDossier 341 ChemAgent 342 Multi-agent for law 344 Multi-agent for healthcare applications 346 Working with HuggingGPT 353 Using HuggingGPT locally 354 Using HuggingGPT on the web 361
Page
12
Table of Contents xi Multi-agent system 365 SaaS, MaaS, DaaS, and RaaS 377 Software as a Service (SaaS) 377 Model as a Service (MaaS) 380 Data as a Service (DaaS) 385 Results as a Service (RaaS) 387 A comparison of the different paradigms 389 Summary 393 Further reading 394 10 Building an AI Agent Application 397 Technical requirements 398 Introduction to Streamlit 399 Starting with Streamlit 399 Caching the results 404 Developing our frontend with Streamlit 409 Adding the text elements 410 Inserting images in a Streamlit app 411 Creating a dynamic app 413 Creating an application with Streamlit and AI agents 421 Machine learning operations and LLM operations 432 Model development 435 Model training 438 Model testing 441 Inference optimization 443 Handling errors in production 451 Security considerations for production 452 Asynchronous programming 456 asyncio 461 Asynchronous programming and ML 465 Docker 470 Kubernetes 472 Docker with ML 473 Summary 476 Further reading 477 11 The Future Ahead 479 AI agents in healthcare 479 Biomedical AI agents 482 AI agents in other sectors 484 Physical agents 485 LLM agents for gaming 487 Web agents 488 Challenges and open questions 489 Challenges in human-agent communication 489 No clear superiority of multi-agents 492 Limits of reasoning 495 Creativity in LLM 501
Page
13
Table of Contentsxii Mechanistic interpretability 504 The road to artificial general intelligence 510 Ethical questions 514 Summary 518 Further reading 519 Index 523 Other Books You May Enjoy 538
Page
14
Preface Building AI Agents with LLMs, RAG, and Knowledge Graphs introduces you to the evolving landscape of large language models (LLMs) and AI agents, offering both a theoretical foundation and practical guidance. It begins by explaining how text data can be represented and processed using deep learning, then progresses to modern architectures such as the Transformer model. From there, the book explores how LLMs are scaled and fine-tuned, and how their capabilities can be extended with tools, external memory systems, and agent-based frameworks. Technologies such as retrieval-augmented generation (RAG), GraphRAG, and multi-agent systems are explained in detail, with a focus on real-world applications and deployment. By the end of the book, you will have a clear understanding of how to build intelligent, tool-using AI agents and the role these systems play in shaping the future of AI. Who this book is for This book is intended for software engineers, data scientists, and researchers who want to understand and build applications using LLMs and AI agents. A basic understanding of Python programming and foundational concepts in machine learning is recommended to fully benefit from the content. While no deep expertise in NLP is required, familiarity with neural networks, REST APIs, and general software development practices will help you follow the examples and implement real-world systems. Whether you’re looking to build intelligent agents, explore the inner workings of LLMs, or deploy AI applications at scale, this book provides both the theoretical background and practical guidance to get started. What this book covers Chapter 1, Analyzing Text Data with Deep Learning, introduces how to process and represent natural language in a format suitable for machine learning models. It covers various text encoding techniques, from basic one-hot encoding and bag of words to more advanced representations such as TF-IDF and word2vec. The chapter then explores key deep learning architectures for sequential data, such as RNNs, LSTMs, GRUs, and CNNs, and demonstrates how to apply them to text classification tasks. By the end of this chapter you will understand how these foundations enable modern language models such as ChatGPT. Chapter 2, The Transformer: The Model Behind the Modern AI Revolution, introduces attention mechanisms and explains how they evolved into the transformer architecture. The chapter highlights the limitations of earlier models such as RNNs and LSTMs, and shows how transformers overcame them to become the foundation of modern NLP. Key topics include self-attention, masked language modeling, training techniques, and internal model visualization. The chapter concludes by demonstrating real-world applications and laying the groundwork for understanding today’s LLMs.
Page
15
Prefacexiv Chapter 3, Exploring LLMs as a Powerful AI Engine, examines how the large-scale training of transformer models gave rise to today’s LLMs. The chapter explores their evolution, capabilities, and limitations, including techniques such as instruction tuning, fine-tuning, and alignment. It also introduces more compact and efficient LLM variants, multimodal models that handle multiple data types, and understanding challenges such as hallucinations, ethical concerns, and prompt engineering. Chapter 4, Building a Web Scraping Agent with an LLM, introduces the concept of AI agents as an extension of LLMs, aimed at overcoming their ability to perform actions. The chapter explores the key characteristics of agents, and distinctions between single and multi-agent systems. It also presents the main libraries used for building agents and guides you through the creation of a web-scraping agent capable of retrieving information from the internet. Chapter 5, Extending Your Agent with RAG to Prevent Hallucinations, explores how RAG could overcome key limitations of LLMs, such as outdated knowledge and hallucinations. The chapter explains how RAG enables an LLM to access external information sources through embedding and vector databases, thereby improving accuracy and adaptability. It also compares RAG with fine-tuning and demonstrates its practical use by building a movie recommendation agent. Chapter 6, Advanced RAG Techniques for Information Retrieval and Augmentation, expands on the basic RAG architecture by introducing enhancements at every stage of the pipeline—data ingestion, indexing, retrieval, and generation. The chapter explores modular RAG, techniques for scaling systems with large datasets and user bases, and key concerns such as robustness and privacy. It also highlights current challenges and open questions surrounding the future development of RAG-based systems. Chapter 7, Creating and Connecting a Knowledge Graph to an AI Agent, explores how to structure textual knowledge into knowledge graphs (KGs) to enhance information retrieval and reasoning in AI agents. The chapter introduces the concept of GraphRAG, where KGs are used to augment LLMs with structured contextual data. It covers how LLMs can be used to build KGs by extracting entities and relationships, how to use graphs for querying and reasoning, and discusses the benefits, limitations, and future directions of combining different approaches. Chapter 8, Reinforcement Learning and AI Agents, explores how agents can learn by interacting with dynamic environments, adjusting their behavior based on experience. It introduces the fundamentals of reinforcement learning, explains how agents make decisions and improve over time, and demonstrates how neural networks can be used to guide behavior. The chapter concludes by discussing how LLMs can be combined with reinforcement learning to build more capable AI systems. Chapter 9, Creating Single- and Multi-Agent Systems, explores how LLMs can be extended with tools and other models to form autonomous agents. It introduces the concept of single-agent and multi- agent systems, shows how LLMs can interact with APIs or external models, and presents key examples such as HuggingGPT. The chapter also covers agent coordination strategies, real-world applications in complex domains, and emerging business paradigms such as SaaS, MaaS, DaaS, and RaaS.
Page
16
Preface xv Chapter 10, Building an AI Agent Application, addresses the challenges of scaling and deploying AI agents in real-world applications. It introduces Streamlit as a rapid prototyping framework to create both frontend and backend components of an agent-based system. The chapter also covers key operational aspects such as asynchronous programming, containerization with Docker, and best practices for building scalable, production-ready AI solutions. Chapter 11, The Future Ahead, explores the transformative potential of AI agents across industries such as healthcare and beyond. Building on the advancements discussed in earlier chapters, it reflects on the remaining technical and ethical challenges facing LLMs and agent systems. The chapter concludes by examining open questions and future directions in the development and deployment of intelligent AI agents. To get the most out of this book You should have a basic understanding of Python and be familiar with fundamental programming concepts such as functions, classes, and modules. A general knowledge of machine learning and neural networks (such as what a model is and how training works) will help in following the deeper technical content. While prior experience with deep learning frameworks or LLMs is not required, it will enhance your ability to apply the techniques discussed. The book is designed to be progressive, so concepts are introduced step by step, but a technical mindset is essential. Software/hardware covered in the book Operating system requirements Python 3.10+ Windows, macOS, or Linux PyTorch/Transformers Windows, macOS, or Linux Streamlit Windows, macOS, or Linux Docker Windows, macOS, or Linux For readers without access to a local GPU, using Google Colab is a convenient option. A Google Colab Pro account is recommended, as it provides access to more powerful GPUs such as NVIDIA T4 or A100, which can greatly improve performance when running embedding models, fine-tuning, or working with agents. If you are using the digital version of this book, we advise you to type the code yourself or access the code from the book’s GitHub repository (a link is available in the next section). Doing so will help you avoid any potential errors related to the copying and pasting of code. Download the example code files You can download the example code files for this book from GitHub at https://github.com/ PacktPublishing/Modern-AI-Agents/tree/main. If there’s an update to the code, it will be updated in the GitHub repository.
Page
17
Prefacexvi We also have other code bundles from our rich catalog of books and videos available at https:// github.com/PacktPublishing/. Check them out! Conventions used There are a number of text conventions used throughout this book. Code in text: Indicates code words in text, database table names, folder names, filenames, file extensions, pathnames, dummy URLs, user input, and X/Twitter handles. Here is an example: “The process_frame function is used to preprocess frames from the game to make them more suitable for training an RL agent.” A block of code is set as follows: self.critic_linear = nn.Linear(512, 1) self.actor_linear = nn.Linear(512, num_actions) When we wish to draw your attention to a particular part of a code block, the relevant lines or items are set in bold: [default] exten => s,1,Dial(Zap/1|30) exten => s,2,Voicemail(u100) exten => s,102,Voicemail(b100) exten => i,1,Voicemail(s0) Any command-line input or output is written as follows: streamlit run https://raw.githubusercontent.com/streamlit/my_apps/ master/my_app.py Bold: Indicates a new term, an important word, or words that you see onscreen. For instance, words in menus or dialog boxes appear in bold. Here is an example: “Once we have our tokens ready, we can enter our question and click Submit.” Tips or important notes Appear like this. Get in touch Feedback from our readers is always welcome. General feedback: If you have questions about any aspect of this book, email us at customercare@ packtpub.com and mention the book title in the subject of your message.
Page
18
Preface xvii Errata: Although we have taken every care to ensure the accuracy of our content, mistakes do happen. If you have found a mistake in this book, we would be grateful if you would report this to us. Please visit www.packtpub.com/support/errata and fill in the form. Piracy: If you come across any illegal copies of our works in any form on the internet, we would be grateful if you would provide us with the location address or website name. Please contact us at copyright@packt.com with a link to the material. If you are interested in becoming an author: If there is a topic that you have expertise in and you are interested in either writing or contributing to a book, please visit authors.packtpub.com. Share Your Thoughts Once you’ve read Building AI Agents with LLMs, RAG, and Knowledge Graphs, we’d love to hear your thoughts! Please click here to go straight to the Amazon review page for this book and share your feedback. Your review is important to us and the tech community and will help us make sure we’re delivering excellent quality content.
Page
19
Prefacexviii Download a free PDF copy of this book Thanks for purchasing this book! Do you like to read on the go but are unable to carry your print books everywhere? Is your eBook purchase not compatible with the device of your choice? Don’t worry, now with every Packt book you get a DRM-free PDF version of that book at no cost. Read anywhere, any place, on any device. Search, copy, and paste code from your favorite technical books directly into your application. The perks don’t stop there, you can get exclusive access to discounts, newsletters, and great free content in your inbox daily Follow these simple steps to get the benefits: 1. Scan the QR code or visit the link below https://packt.link/free-ebook/978-1-83508-706-0 2. Submit your proof of purchase 3. That’s it! We’ll send your free PDF and other benefits to your email directly
Page
20
This part lays the foundation for understanding how modern AI agents process and generate language. It begins by exploring how raw text can be represented in numerical form suitable for deep learning models, introducing techniques such as word embeddings and basic neural architectures. The focus then shifts to the Transformer model and explains how attention mechanisms revolutionized natural language processing. Finally, it examines how large language models (LLMs) are built by scaling transformers, discussing training strategies, instruction tuning, fine-tuning, and the evolution toward models capable of general-purpose reasoning. Together, these chapters provide the technical and conceptual groundwork for building intelligent AI agents. This part has the following chapters: • Chapter 1, Analyzing Text Data with Deep Learning • Chapter 2, The Transformer: The Model Behind the Modern AI Revolution • Chapter 3, Exploring LLMs as a Powerful AI Engine Part 1: The AI Agent Engine: From Text to Large Language Models
The above is a preview of the first 20 pages. Register to read the complete e-book.
AI Reading Assistant
Whole-book reading guide from stratified index samples; jump to passages in the text
AI guide
【One-Line Pitch】
A practical, hands-on guide for developers and AI practitioners who want to move beyond simple chatbots and build autonomous agents by combining large language models, retrieval-augmented generation, and knowledge graphs. If you are looking for a structured path from prompt engineering to production-ready agent architectures, this book is your blueprint.
【Book Arc】
- **Opening (~0%–10%)**: Lays the conceptual foundation by defining what an AI agent is, contrasting it with plain LLM calls, and introducing the core building blocks—LLMs, RAG, and knowledge graphs—that will be used throughout.
- **Early (~10%–30%)**: Dives into the mechanics of LLM-powered reasoning, covering prompt design, tool use, and function calling, which are the essential skills for making models act rather than just respond.
- **Middle (~30%–60%)**: Explores retrieval-augmented generation in depth, showing how to ground agents in external data sources, handle context windows, and evaluate the quality of retrieved information.
- **Late (~60%–85%)**: Introduces knowledge graphs as a structured memory layer, teaching readers how to represent relationships, query graph data, and integrate this semantic backbone into agent decision-making.
- **Ending (~85%–100%)**: Brings everything together with architectural patterns for autonomous agents, including multi-step planning, self-correction loops, and practical deployment considerations for real-world applications.
【Key Takeaways】
- **Agents are more than LLM wrappers** (Early): The book stresses that true agency requires orchestration—models must be embedded in a loop of perception, reasoning, and action, not just called once for a text completion.
- **Tool use is the gateway to autonomy** (Early): Teaching an LLM to invoke external functions (search, calculators, APIs) is the first practical step; the book provides concrete patterns for defining tools and parsing model outputs reliably.
- **RAG is about grounding, not just retrieval** (Middle): Effective retrieval-augmented generation demands careful chunking, embedding strategy, and re-ranking; the authors emphasize that garbage-in-garbage-out applies doubly to vector databases.
- **Context windows are a constraint to engineer around** (Middle): Rather than stuffing everything into a prompt, the book advocates for selective retrieval and summarization pipelines to keep the model focused and reduce hallucination risk.
- **Knowledge graphs add relational memory** (Late): Unlike flat vector stores, graphs capture entities and their connections, enabling agents to answer multi-hop questions and reason about relationships that pure semantic search misses.
- **Hybrid architectures win** (Late): The strongest agent designs combine vector search for fast recall with graph traversal for deep reasoning—each covers the other's blind spots.
- **Evaluation is a non-negotiable practice** (Ending): The book dedicates significant attention to building test suites for agent behavior, measuring task completion rates, and iterating on failure cases rather than relying on vibes.
【Reading Tips】
- **Skim the conceptual opening** if you already know what agents are; the real value starts when the authors show code for tool calling and RAG pipelines.
- **Deep-read the RAG and knowledge graph chapters**—these are the technical heart of the book, and the examples are designed to be adapted to your own data.
- **Treat the evaluation sections as mandatory reading**; many practitioners skip this, but the authors make a compelling case that agent quality is only as good as your ability to measure it.
- **Have a code editor ready**; the book is practical, and you will benefit from typing out the examples rather than just reading them.
- **If you are new to LLM APIs**, keep the early chapters close; they explain the request/response patterns you will need for everything that follows.
【Coverage Limits】
The excerpts provided cover only the book's title and author metadata, so this guide synthesizes the expected structure based on the subtitle and common patterns in this domain. Specific chapter titles, code listings, and detailed examples are not available from the source material.
Passage locations
Excerpt 1
书名: Building AI Agents with LLMs, RAG, and Knowledge Graphs A practical guide to autonomous and modern AI agents (Salvatore Raieli, Gabriele Iuculano) (z-lib...
View in text
Recommended for You
{{#thumbnailUrl}}
{{/thumbnailUrl}}
{{^thumbnailUrl}}
{{/thumbnailUrl}}
Loading recommended books...
Failed to load, please try again later
Tip the Site
Scan the WeChat Pay or Alipay code to tip. No login required.
WeChat Pay
Alipay