• bitcoinBitcoin(BTC)$76,910.00-2.48%
  • ethereumEthereum(ETH)$2,237.10-0.87%
  • tetherTether(USDT)$1.000.01%
  • binancecoinBNB(BNB)$699.030.97%
  • rippleXRP(XRP)$1.250.78%
  • usd-coinUSDC(USDC)$1.000.04%
  • solanaSolana(SOL)$94.96-1.32%
  • tronTRON(TRX)$0.330007-0.82%
  • Figure HelocFigure Heloc(FIGR_HELOC)$1.03-2.38%
  • HyperliquidHyperliquid(HYPE)$89.98-2.30%
  • zcashZcash(ZEC)$1,229.55-0.41%
  • dogecoinDogecoin(DOGE)$0.0752930.01%
  • moneroMonero(XMR)$595.71-6.36%
  • USDSUSDS(USDS)$1.000.12%
  • whitebitWhiteBIT Coin(WBT)$73.85-2.27%
  • leo-tokenLEO Token(LEO)$9.42-0.41%
  • chainlinkChainlink(LINK)$11.140.92%
  • cardanoCardano(ADA)$0.1930431.50%
  • stellarStellar(XLM)$0.1672983.18%
  • bitcoin-cashBitcoin Cash(BCH)$289.195.94%
  • nearNEAR Protocol(NEAR)$4.303.13%
  • daiDai(DAI)$1.00-0.05%
  • Ethena USDeEthena USDe(USDE)$1.00-0.06%
  • RainRain(RAIN)$0.006334-3.19%
  • uniswapUniswap(UNI)$6.924.68%
  • litecoinLitecoin(LTC)$55.010.18%
  • USD1USD1(USD1)$1.000.00%
  • CantonCanton(CC)$0.0967190.97%
  • avalanche-2Avalanche(AVAX)$8.400.59%
  • suiSui(SUI)$0.891.11%
  • the-open-networkGram (prev. Toncoin)(GRAM)$1.17-0.37%
  • hedera-hashgraphHedera(HBAR)$0.0719155.24%
  • tether-goldTether Gold(XAUT)$3,874.36-3.52%
  • Global DollarGlobal Dollar(USDG)$1.000.02%
  • paypal-usdPayPal USD(PYUSD)$1.000.09%
  • shiba-inuShiba Inu(SHIB)$0.0000050.99%
  • quant-networkQuant(QNT)$189.222.93%
  • BittensorBittensor(TAO)$232.81-1.65%
  • crypto-com-chainCronos(CRO)$0.051147-0.58%
  • Ripple USDRipple USD(RLUSD)$1.000.04%
  • EthenaEthena(ENA)$0.183892-2.56%
  • Ondo US Dollar YieldOndo US Dollar Yield(USDY)$1.15-0.02%
  • Circle USYCCircle USYC(USYC)$1.140.03%
  • okbOKB(OKB)$110.170.53%
  • MemeCoreMemeCore(M)$0.96-6.33%
  • BlackRock USD Institutional Digital Liquidity FundBlackRock USD Institutional Digital Liquidity Fund(BUIDL)$1.000.00%
  • pepePepe(PEPE)$0.0000051.07%
  • OndoOndo(ONDO)$0.4022783.42%
  • aaveAave(AAVE)$126.750.96%
  • Pump.funPump.fun(PUMP)$0.0040580.95%
TradePoint.io
  • Main
  • AI & Technology
  • Stock Charts
  • Market & News
  • Business
  • Finance Tips
  • Trade Tube
  • Blog
  • Shop
No Result
View All Result
TradePoint.io
No Result
View All Result

How to Build Production-Ready Agentic Systems with Z.AI GLM-5 Using Thinking Mode, Tool Calling, Streaming, and Multi-Turn Workflows

April 4, 2026
in AI & Technology
Reading Time: 3 mins read
A A
How to Build Production-Ready Agentic Systems with Z.AI GLM-5 Using Thinking Mode, Tool Calling, Streaming, and Multi-Turn Workflows
ShareShareShareShareShare
print("\n" + "=" * 70)
print("🤖 SECTION 8: Multi-Tool Agentic Loop")
print("=" * 70)
print("Build a complete agent that can use multiple tools across turns.\n")




class GLM5Agent:


   def __init__(self, system_prompt: str, tools: list, tool_registry: dict):
       self.client = ZaiClient(api_key=API_KEY)
       self.messages = [{"role": "system", "content": system_prompt}]
       self.tools = tools
       self.registry = tool_registry
       self.max_iterations = 5


   def chat(self, user_input: str) -> str:
       self.messages.append({"role": "user", "content": user_input})


       for iteration in range(self.max_iterations):
           response = self.client.chat.completions.create(
               model="glm-5",
               messages=self.messages,
               tools=self.tools,
               tool_choice="auto",
               max_tokens=2048,
               temperature=0.6,
           )


           msg = response.choices[0].message
           self.messages.append(msg.model_dump())


           if not msg.tool_calls:
               return msg.content


           for tc in msg.tool_calls:
               fn_name = tc.function.name
               fn_args = json.loads(tc.function.arguments)
               print(f"   🔧 [{iteration+1}] {fn_name}({fn_args})")


               if fn_name in self.registry:
                   result = self.registry[fn_name](**fn_args)
               else:
                   result = {"error": f"Unknown function: {fn_name}"}


               self.messages.append({
                   "role": "tool",
                   "content": json.dumps(result, ensure_ascii=False),
                   "tool_call_id": tc.id,
               })


       return "⚠️ Agent reached maximum iterations without a final answer."




extended_tools = tools + [
   {
       "type": "function",
       "function": {
           "name": "get_current_time",
           "description": "Get the current date and time in ISO format",
           "parameters": {
               "type": "object",
               "properties": {},
               "required": [],
           },
       },
   },
   {
       "type": "function",
       "function": {
           "name": "unit_converter",
           "description": "Convert between units (length, weight, temperature)",
           "parameters": {
               "type": "object",
               "properties": {
                   "value": {"type": "number", "description": "Numeric value to convert"},
                   "from_unit": {"type": "string", "description": "Source unit (e.g., 'km', 'miles', 'kg', 'lbs', 'celsius', 'fahrenheit')"},
                   "to_unit": {"type": "string", "description": "Target unit"},
               },
               "required": ["value", "from_unit", "to_unit"],
           },
       },
   },
]




def get_current_time() -> dict:
   return {"datetime": datetime.now().isoformat(), "timezone": "UTC"}




def unit_converter(value: float, from_unit: str, to_unit: str) -> dict:
   conversions = {
       ("km", "miles"): lambda v: v * 0.621371,
       ("miles", "km"): lambda v: v * 1.60934,
       ("kg", "lbs"): lambda v: v * 2.20462,
       ("lbs", "kg"): lambda v: v * 0.453592,
       ("celsius", "fahrenheit"): lambda v: v * 9 / 5 + 32,
       ("fahrenheit", "celsius"): lambda v: (v - 32) * 5 / 9,
       ("meters", "feet"): lambda v: v * 3.28084,
       ("feet", "meters"): lambda v: v * 0.3048,
   }
   key = (from_unit.lower(), to_unit.lower())
   if key in conversions:
       result = round(conversions[key](value), 4)
       return {"value": value, "from": from_unit, "to": to_unit, "result": result}
   return {"error": f"Conversion {from_unit} → {to_unit} not supported"}




extended_registry = {
   **TOOL_REGISTRY,
   "get_current_time": get_current_time,
   "unit_converter": unit_converter,
}


agent = GLM5Agent(
   system_prompt=(
       "You are a helpful assistant with access to weather, math, time, and "
       "unit conversion tools. Use them whenever they can help answer the user's "
       "question accurately. Always show your work."
   ),
   tools=extended_tools,
   tool_registry=extended_registry,
)


print("🧑 User: What time is it? Also, if it's 28°C in Tokyo, what's that in Fahrenheit?")
print("   And what's 2^16?")
result = agent.chat(
   "What time is it? Also, if it's 28°C in Tokyo, what's that in Fahrenheit? "
   "And what's 2^16?"
)
print(f"\n🤖 Agent: {result}")




print("\n" + "=" * 70)
print("⚖️  SECTION 9: Thinking Mode ON vs OFF Comparison")
print("=" * 70)
print("See how thinking mode improves accuracy on a tricky logic problem.\n")


tricky_question = (
   "I have 12 coins. One of them is counterfeit and weighs differently than the rest. "
)


print("─── WITHOUT Thinking Mode ───")
t0 = time.time()
r_no_think = client.chat.completions.create(
   model="glm-5",
   messages=[{"role": "user", "content": tricky_question}],
   thinking={"type": "disabled"},
   max_tokens=2048,
   temperature=0.6,
)
t1 = time.time()
print(f"⏱️  Time: {t1-t0:.1f}s | Tokens: {r_no_think.usage.completion_tokens}")
print(f"📝 Answer (first 300 chars): {r_no_think.choices[0].message.content[:300]}...")


print("\n─── WITH Thinking Mode ───")
t0 = time.time()
r_think = client.chat.completions.create(
   model="glm-5",
   messages=[{"role": "user", "content": tricky_question}],
   thinking={"type": "enabled"},
   max_tokens=4096,
   temperature=0.6,
)
t1 = time.time()
print(f"⏱️  Time: {t1-t0:.1f}s | Tokens: {r_think.usage.completion_tokens}")
print(f"📝 Answer (first 300 chars): {r_think.choices[0].message.content[:300]}...")

Credit: Source link

YOU MAY ALSO LIKE

Everything You Need To Know About Googlebooks

OpenAI to Honor Shared Robots.txt Signal for AI Training Preferences – Unite.AI

ShareTweetSendSharePin

Related Posts

Everything You Need To Know About Googlebooks
AI & Technology

Everything You Need To Know About Googlebooks

October 30, 2026
OpenAI to Honor Shared Robots.txt Signal for AI Training Preferences – Unite.AI
AI & Technology

OpenAI to Honor Shared Robots.txt Signal for AI Training Preferences – Unite.AI

October 30, 2026
Project Suncatcher’s Orbiting TPU Delivers Its First AI-Generated Haiku – Unite.AI
AI & Technology

Project Suncatcher’s Orbiting TPU Delivers Its First AI-Generated Haiku – Unite.AI

October 30, 2026
New tvOS 27.2 Features To Try For An Upgraded Apple TV Experience
AI & Technology

New tvOS 27.2 Features To Try For An Upgraded Apple TV Experience

October 30, 2026
Next Post
Anthropic cuts off the ability to use Claude subscriptions with OpenClaw and third-party AI agents

Anthropic cuts off the ability to use Claude subscriptions with OpenClaw and third-party AI agents

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Search

No Result
View All Result
OpenAI Helped Find Potentially Catastrophic Cyber Flaw

OpenAI Helped Find Potentially Catastrophic Cyber Flaw

October 25, 2026
Heavy rain batters Florida as Hurricane Isaias approaches landfall

Heavy rain batters Florida as Hurricane Isaias approaches landfall

October 28, 2026
symplr Launches AI Time and Scheduling to Predict Healthcare Staffing Needs – Unite.AI

symplr Launches AI Time and Scheduling to Predict Healthcare Staffing Needs – Unite.AI

October 26, 2026

About

Learn more

Our Services

Legal

Privacy Policy

Terms of Use

Bloggers

Learn more

Article Links

Contact

Advertise

Ask us anything

©2020- TradePoint.io - All rights reserved!

Tradepoint.io, being just a publishing and technology platform, is not a registered broker-dealer or investment adviser. So we do not provide investment advice. Rather, brokerage services are provided to clients of Tradepoint.io by independent SEC-registered broker-dealers and members of FINRA/SIPC. Every form of investing carries some risk and past performance is not a guarantee of future results. “Tradepoint.io“, “Instant Investing” and “My Trading Tools” are registered trademarks of Apperbuild, LLC.

This website is operated by Apperbuild, LLC. We have no link to any brokerage firm and we do not provide investment advice. Every information and resource we provide is solely for the education of our readers. © 2020 Apperbuild, LLC. All rights reserved.

No Result
View All Result
  • Main
  • AI & Technology
  • Stock Charts
  • Market & News
  • Business
  • Finance Tips
  • Trade Tube
  • Blog
  • Shop

© 2023 - TradePoint.io - All Rights Reserved!